美文网首页
百度地图SDK获取经纬度返回4.9E-324

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

作者: 百事可乐99 | 来源:发表于2019-07-23 16:54 被阅读0次

    这个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);
        }
    

    相关文章

      网友评论

          本文标题:百度地图SDK获取经纬度返回4.9E-324

          本文链接:https://www.haomeiwen.com/subject/uijalctx.html