在没有外网的情况下,我们需要使用离线的百度地图,所以,就不能引入百度地图的线上 JS 文件。
之前我们做百度地图项目的时候,只需要引入一个 Script 标签即可
<script type=\\\"text/javascript\\\" src=\\\"http://api.map.baidu.com/api?v=3.0&ak=您的密钥\\\"></script>
便可以在页面中使用百度地图的各种 API ,但这次项目不允许联网,那只能用离线版本地图。
访问地址:
http://api.map.baidu.com/api?v=3.0
然后复制 Script 里面的链接,打开连接下载当前 JS ,每隔一段时间打开地图的版本号都不一样,地图一直在维护,所以版本号会更新。如果你打算自己制作一个离线地图,就按下面链接的方法:
参考网站:
https://blog.csdn.net/wml00000/article/details/82219015
-
先把 JS 文件格式化
-
按提示先屏蔽 AK 验证
-
引用本地的 modules 模块文件
-
修改为本地的资源引用
-
更改地图瓦片的本地路径
百度地图是需要配合 localStorage 来使用的,我在本机调试的时候没问题,打包后,换台电脑就不能使用了,所以,你需要去源码里改自己编译后对应的方法名。
下面 f.nk() 就是我当前地图版本需要调用的 JS :
if (a.length > 0) {
for (i = 0; i < a.length; i++) {
mf = mapConfig.home + \\\'modules/\\\' + a[i] + \\\'.js\\\';
pa(mf);
console.log(\\\'加载模块文件:\\\' + mf); //IE error
}
} else {
f.nK()//需要换成自己版本号 格式化的JS方法
}
//0 == a.length ? f.nK() : pa(f.EF.rP + \\\"&mod=\\\" + a.join(\\\",\\\"))
地图如果可以运行,说明该加载的JS都加载好了,下一步就该去加载对应的瓦片了,瓦片也可以叫「图片」。完整的百度地图,全是一张张的图片铺起来的,所以,你需要在你对应的级别来铺相同级别的图片。
百度地图可以放大和缩小,而放大缩小的级别对应着不同的文件夹:
百度瓦片,我使用的是「BMapDown」这个工具,安装 .exe 包,按照说明去下载你需要的地图瓦片。
GPS 导航定位默认都使用的是 WGS84 的坐标码,而百度用的是 BD09 的,所以需要进行转码,不管是腾讯还是高德的地图坐标码,都需要转换。
百度地图内置的转码 API 必须要联网,如果不联网的话,是不会走 callback 方法的。所以,我们可以使用大牛制作好的转码库「gcoord」库。
Github 地址:
https://github.com/hujiulong/gcoord
最后放一个我自己做的百度地图离线版本的 Git 库,如有需要可自取。
Github地址:
图片授权基于 www.pixabay.com 相关协议
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34483.html