Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.3k views
in Technique[技术] by (71.8m points)

离线百度地图配置本地瓦片图问题

目的:离线百度地图使用本地瓦片图,将地图正确显示。

image.png

按照上图修改代码,打印出获取的瓦片图路径是对的。
比如13级别时需要的的瓦片图,打印出来是:'static/tiles/13/1581/589.png'
我的瓦片图确实放在'static/tiles'下,
但13文件夹下没有目录及文件'/1581/589.png',
都是其他的图片文件。

假如将文件名及图片名改成打印出来的所需要的,(比如将13/1608/444.png,'1608'改成'1581','444.png'改成'589.png')是可以正常渲染出来的,因此应该不是路径的问题。

那可能是资源的问题吗?为什么下载的和它所需要的的对不上?应该如何解决呢?
瓦片图资源是从MapDownloader软件上下载的。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

可能是坐标计算公式错了,百度地图是进行了加密偏移的,不过加密公式是公开的,所以你需要重新计算下,一般的公式计算如下。但是不保证和你的离线包匹配,所以最好到你下载离线包的地方找一下计算公式

tileUrlFunction: function(tileCoord, pixelRatio, proj) {
    var z = tileCoord[0];
    var x = tileCoord[1];
    var y = tileCoord[2];
    // 百度瓦片服务url将负数使用M前缀来标识
    if (x < 0) {
        x = 'M' + (-x);
    }
    if (y < 0) {
        y = 'M' + (-y);
    }
    return 'http://online' + parseInt(Math.random() * 10) + '.map.bdimg.com/onlinelabel/?qt=tile&x=' +
        x + '&y=' + y + '&z=' + z + '&styles=sl&udt=20170620&scaler=1&p=1';
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...