百度地图api的几个坑
1.编译错误,找不到com.baidu.mapapi.SDKInitializer
原因:
不仅需要baidumapapi_map_vXX.jar
还需要其他包,可能是
libBaiduMapSDK_base_vXX
或者libBaiduMapSDK_util_vXX
2.SDKInitializer.initialize(getApplicationContext())这句运行时报错
No implementationfound for com.baidu.platform。。。
原因:
\app\src\main\jnilibs\下的so文件要在arm64-v8a(手机是arm64?)这个文件夹下,不能直接在
\app\src\main\jnilibs\下,
所以是app\src\main\jnilibs\arm64-v8a这个目录下要有和jar对应的so文件
3.只显示网格,没有地图加载
原因:
开发者key的格式错误
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
上面com.baidu.lbsapi.API_KEY这个不要改(不要手欠改成自己的包名)
只要替换下面的xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx就可以了
另外,百度API_KEY的申请,需要用证书指纹,要用到下面的命令
keytool -list -v -keystore xxx.jks
debug key就是
keytool -list -v -keystore debug.jks
windows的debug key的默认路径是
C:\Users\yourname\.android>
正式版的key可以在android studio中申请,查看指纹的方法相同
4.坐标偏移
gps取到的坐标不能直接标在地图上,有很大的偏移
解决:
//获得GPS
Location last_location = locationmanager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
LatLng point=new LatLng(last_location.getLatitude(),last_location.getLongitude());
//转换
CoordinateConverter converter=new CoordinateConverter();
converter.from(CoordinateConverter.CoordType.GPS);
converter.coord(point);
point=converter.convert();
参考:
http://blog.csdn.net/callmesen/article/details/40542949
百度的sdk中有mapview坐标到地图经纬的映射,但是要用得到的经纬去模拟gps就会有问题,需要把百度的坐标转成设备坐标,这里有java的实现:
https://github.com/geosmart/coordtransform/blob/master/src/main/java/me/demo/util/geo/CoordinateTransformUtil.java
5.不是坑,是我手欠
把地图类型设置为NONE,导致白屏
mMap.setMapType(BaiduMap.MAP_TYPE_NONE);