由于最近做完了一个项目“停车位助手”是基于百度地图SDK的我的项目APP开源在这里,在开发期间使用百度地图的时候遇到了各种奇葩的问题,今天我就对百度地图SDK的使用进行一个总结,对以前经常犯的错误集中起来,希望可以帮助更多的人。如果有错误欢迎各位大牛指正。
1. 下载SDK开发包时,一定要将想要实现的功能模块一起打包下载下来。
在使用百度地图之前,需要首先在官网注册用户,然后根据自己想要使用的功能选择官网上相应的模块下载SDK。在这里一定要注意(吐血推荐):下载百度地图的SDK时,一定要把所想要实现的功能模块一块全部下载下来(百度会自动将你选择的几个模块打成一个包Jar),当初我是先下载了基础地图的SDK,然后又想实现别的功能又去下载导航的SDK,结果导致两次下载下来的包发生冲突,导航的时候死活出不来,浪费了好几天时间。
2、百度基础地图打开后只有网格不显示地图
这个是比较坑的一个问题,网上普遍有两种解决方案:
1、key值配置不正确所导致,解决方法就是查看自己是否已经在项目中正确配置了key。
2、没有调用百度地图的初始化语句所导致,加上一句话就OK了SDKInitializer.initialize(context);
但是我相信还有的同学跟我一样上边两种都设置了正确了但是百度地图还是加载不出来,那就是下边我所遇到的第三种情况:
3、你所使用的eclipse的Sha1值与你在注册百度地图官网上的sha1值不匹配。Eclipse上sha1值查找方法:Windows->Preference->Android->Build。百度地图官网中注册Sha1值地址查找方法:登陆后点击“API控制台”再点击“查看应用”,在你申请的应用边上有一个“设置”,点进去就可以看见sha1值了,,,,然后修改成你现在使用Eclipse的sha1值就ok了。
3、百度地图的坐标转化问题:在使用百度地图导航功能时定位不精确
查看一下百度地图的Api你就会发现百度地图以更提供了三种坐标类型,当初我用的时候简直哭晕在厕所,因为对于一个初学者来说看见不同的坐标然后百度查看是什么意思那感觉就简直了。三种坐标分别是:bd09ll,GPS,GCJ02。至于都是什么东西大家自己百度去吧哈哈。我来说我当初遇到的问题:我首先用百度地图的定位功能获取了自己现在的位置经纬度,然后又输入了目的地的经纬度,最后调用百度地图的导航发现位置总是有偏差。后来发现原因其实就是百度的定位是默认使用的bd09ll类型,而导航是使用的GCJ02坐标类型(不知道百度为什么要为难广大用户),我们在调用百度导航的方法时,需要将起始地和目的地的坐标类型转换为GCJ02类型就可以了。解决方案如下:
BDLocation bdLocation4 = LocationClient.getBDLocationInCoorType(bdLocation2, BDLocation.BDLOCATION_BD09LL_TO_GCJ02);
这里我的bdLocation2是bd0911类型,bdLocation4就是转化好的GcJ02类型了。
4、导航初始化的时候报错提示:找不到 libgnustl_shared.so文件
这个问题简直就是深坑了,明明自己的项目中存在这个文件,但运行时就是会报错提示找不到,简直能让你有砸电脑的冲动。我试了N种办法也没有解决,最后用了最简单粗暴的办法,删了所有的Jar包 ,去百度直接重新在打包下载,然后一点点Copy原来的项目问题就解决了,说到这我心里简直有一万头草泥马在奔腾。但最终还是解决了,至于原因嘛,不详。
最后让我来吐槽一下百度地图的SDK,个人觉得SDK设计的太过于烦琐了,可能百度的开发人员对它的整体结构很熟悉,但是对于使用者来说就很不方便。好了 就到这了,不对的地方请指正,希望对大家有帮助。