百度地图SDK获取经纬度返回4.9E-324

这个4.9E-324其实是定位的默认值,出现这个问题的原因可能如下:

  • APIKEY没有配置好
    在之前的版本中,SDK应该是没有对AK进行校验(比如我之前用的5.x版本),所以用老版本没这个问题,升级新版本后可能就出现这个问题了。出现这个问题时,定位结果BDLocation中的locType会返回505,注意debug包和release包是要使用不同的AK的
  • 清单文件中没有注册相应的service或者没有配置ak,另外还要记得给需要的权限,具体参考可官方文档AndroidStudio配置百度地图SDK
        

        
  • 需要在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);
    }

你可能感兴趣的:(百度地图SDK获取经纬度返回4.9E-324)