问答

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

作者:admin 2021-05-09 我要评论

目的 :离线百度地图使用本地瓦片图,将地图正确显示。 按照上图修改代码,打印出获取的瓦片图路径是对的。 比如13级别时需要的的瓦片图,打印出来是:'static/t...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

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软件上下载的。

###

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

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';
}

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • grom设置json默认值

    grom设置json默认值

  • Vue路由报错,看着没问题

    Vue路由报错,看着没问题

  • 思否邮箱登录为什么区分大小写了呢?

    思否邮箱登录为什么区分大小写了呢?

  • 有没有能够直接上传markdown文件作为博

    有没有能够直接上传markdown文件作为博

腾讯云代理商
海外云服务器