这个4.9E-324其实是定位的默认值,出现这个问题的原因可能如下:
- APIKEY没有配置好
在之前的版本中,SDK应该是没有对AK进行校验(比如我之前用的5.x版本),所以用老版本没这个问题,升级新版本后可能就出现这个问题了。出现这个问题时,定位结果BDLocation中的locType会返回505,注意debug包和release包是要使用不同的AK的 - 清单文件中没有注册相应的service或者没有配置ak,另外还要记得给需要的权限,具体参考可官方文档AndroidStudio配置百度地图SDK
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:exported="false"
android:process=":remote" />
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="${BAIDU_LBS_APP_KEY}" />
- 需要在application中进行初始化,貌似在使用的时候进行初始化也会获取不到位置。。
在application的onCreate方法中,调用initLocal()方法
private static void initLocal(){
DebugUtil.debug(TAG, "init Local");
Looper.prepare();// 这个地方要先调用Looper.prepare();不然在一些机器上会崩溃
LocalService.getInstant();
Looper.loop();
}
LocalService#getInstance方法如下:
public static synchronized LocalService getInstant() {
if (mManager == null) {
mManager = new LocalService();
mManager.init();
}
return mManager;
}
private void init() {
mLocationClient = new LocationClient(BaseApplication.getContext().getApplicationContext());
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);//设置定位模式
option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02
option.setIsNeedAddress(true);//返回的定位结果包含地址信息
option.setAddrType("all");
mLocationClient.setLocOption(option);
}
网友评论