关于百度地图的离线地图实现

来源:互联网 发布:原生js修改css样式 编辑:程序博客网 时间:2024/05/22 03:33

由于项目需求离线地图的实现,所以花了一段时间研究百度地图和腾讯地图等等的Api文档。相对来说,腾讯地图的api文档是没有百度地图多的,但是相应改版的次数较少,问题不多,而百度地图的问题可就很多了。比如百度地图3.6.0版本之后,抛弃了离线地图的官方下载方式,新的sdk需要更新新的SHA1签名,重新申请新的key值才可以使用等等问题,在这里我就不一一说明,有很多人对此做了解释和完善方法。


我们重点来说一下实现百度地图的离线方法(发现很少有人总结离线方式的实现):

一:首先是关于定位的问题:

在百度地图定位中,如果有网络的情况下,会根据网络地址或者GPS地址定位(一般优先使用GPS定位),但是在没有网络的时候。默认加载北京天安门的位置。我们需要修改默认的定位地址,就需要修改如上类LocationDemo的代码方法中的参数,也就是定位位置的经纬度(所以我们要做离线,首先要保存上一次的经纬度和城市地图)


二:关于离线包的方法:

加载离线包会自动加载,只要有对应城市,相应的管理离线包的类是OfflineDemo,其中包含了获取城市列表,下载,更新等等

这些官方上有详细的说明

三:最后实现离线:

获取某个地区的经纬的管理类是GeoCoderDemo,通过获取上一次的地区城市的经纬度,并且缓存下来,再次打开的时候,判断是否有无网络,如果没有网络的情况下,加载上一次缓存的经纬度信息,并且打开该地区的离线城市包(sdk自助调用已经离线的城市包),在显示地图的MapView,就可以实现离线方式的百度地图显示了


另外附上修改了的百度地图Demo(关于离线方式的几个类eclipse版)http://download.csdn.net/detail/wangyetongsss/9801080



1 0