百度地图2.0瓦片地址获取(窗口内瓦片)

本文介绍了如何获取百度地图2.0窗口内的瓦片地址,通过理解地图对象和理论,实现了瓦片地址计算方法。主要内容包括:地图对象的使用,通过回调方法输出瓦片地址,以及1.3到2.0版本瓦片获取的变通处理。提供了相关HTML代码示例,强调了不要修改在线API中的瓦片地址计算部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取百度地图窗口内的当前显示内容瓦片,可以通过地图对象的当前配置变量的计算重新得到,因此调整窗口位置、缩放,可以很容易的获取所需要的瓦片的下载地址。下载瓦片,然后部署到对应的路径下,就可以实现地图的离线。

1.3版的百度地图瓦片获取是直接参考内部的代码抽取整理而成的,而相关的理论没有做过多的研究。当代码迁移到2.0上的时候,代码的变动很大,以至于想轻松的抽取代码是不现实的。

好在百度地图实现的理论是不变的,因此理论上来说,1.3版的百度地图和2.0版的百度地图在瓦片上是一样的,获取流程上也是一样的,只是某些参数的获取方式可能改变了,比如直接不提供相关的功能的访问。

还好上次写1.3版的百度地图瓦片获取代码的时候,我多深入了解了一下一些功能的实现,写在注释里面了。对上次写的博文《百度地图2.0瓦片获取》还是不够满意的,因为上次写的只能实现增量式瓦片地址获取,而无法一次性获得窗口内的所有瓦片地址。

这次再次翻腾了一下1.3版的这部分代码,感觉还是应该可以移植的,因此结合浏览器的调试,探究了一下相关方法和属性,写出了新版的百度地图2.0瓦片地址获取程序,希望能够帮助到一些有需要的人。

同样的,下载程序不提供,自行嵌入某些程序下载吧。

主要流程和方法描述:

对于页面内的地图,是有一个js对象map来承载的,后期异步的操作都是基于这个对象,获取当前窗口内的瓦片地址也毫不例外。我的思路是,根据map对象,和给出一个回调方法,把当前窗口内的瓦片地址给计算出来,然后通过回调方法输出出来。

我的实现是,写一个方法,所有变量对象都包在这个方法当中,这样就不会污染外部程序;然后调用这个方法的时候,我返回另外一个方法,这个方法的参数就是map和callback,当调用这个方法的时候,当前地图对象窗口内的瓦片地址就会通过回调方法输出出来。

就是这样:

function downloadBaiduTiles(){
//……
return function(map, callback){findAllTiles(map, callback);};
}

而findAllTiles方法是这样写的:

function findAllTiles(map, callback){
    //var mapType = map.getMapType();// 地图类型,现在里面没那么多的可用数据了,直接不要了
    var zoomLevel = map.getZoom();// 放大倍数,现在是用getZoom了,原先是zoomLevel,现在没了。
    var center = map.getCenter(); //这个中心可能需要转换一下。先试试。 //map.mercatorCenter;// 原先获取的中心坐标
    center = convertLL2MC(center);//果然是需要转换才能用啊
    //var cV = mapType.getZoomUnits(zoomLevel);// zoomLevel相关的一个指数,=2^(18-zoomLevel)
    var cV = Math.pow(2, 18-zoomLevel);//现在直接计算这个数。理论不变,代码变了,我们直接计算好了。
    var unitSize = cV * 256; //这个也只能自己计算了//mapType.getZoomFactor(zoomLevel)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值