应项目需求,调研了市面上集中不错的定位选择,
百度地图集成成本极低,首先,它免费,官网文档清晰,demo明确,所以选定百度定位。但还是有很多坑要踩,在我集成百度地图的时候,坑也非常多,在这里,我将详述百度地图集成步骤。
一、申请平台AK
需要开发版SHA1码 和 发布版SHA1码
用cmd 进入 .android 获取开发版
生成链接方式:
链接地址:https://blog.csdn.net/wangyonghao132/article/details/105562047
发布版也就是签名文件的SHA1
链接地址: https://blog.csdn.net/wangyonghao132/article/details/105562047
二、按照文档集成定位
点此可跳入开发者文档
三、遇到问题(记录下来留作无稽之谈并分享方便各位新晋采坑小伙伴借鉴,可避免少量头疼)
1、按照文档集成之后定位经纬度一直是 4.9E-324
解决方法在main下新建文件夹 jniLibs 将jar包以外的文件导入 定位成功
2、定位成功之后 部分属性又一直是空
例如 addr 一直是空 获取不到定位的地址信息
解决方法 在初始化中添加 :
option.setIsNeedAddress(true);
3、定位4.9E-324 和系统权限有关
注意应用权限和系统权限的分别判断
判断系统权限gps是否打开的方法
//判断gps是否处于打开状态
public boolean isOpen(Context mContext) {
if (Build.VERSION.SDK_INT <19) {
LocationManager myLocationManager = (LocationManager )mContext.getSystemService(Context.LOCATION_SERVICE);
return myLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}else{
int state = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF);
if(state==Settings.Secure.LOCATION_MODE_OFF){
return false;
}else{
return true;
}
}
}
true打开 false未打开 若未打开则去打开,跳转方法如下
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
应用的定位权限用你的工具类判断
Manifest.permission.ACCESS_FINE_LOCATION
若是未开前去开启就OK