百度地图定位不准

简述

在android的百度地图开发中,有一个很奇怪的现象,定位功能可以实现,可就是与实际位置有偏差,但是此时你通过调试信息发现,定位的输出信息与实际位置基本吻合,而显示在地图上的却是另外一个地址,想知原因看下方。

首先

先理解坐标类型,不同的地图软件有自己的坐标表示方式,也有国际统一的标识方式,之所以出现上述现象,就是因为定位的坐标标志方式与显示的坐标表示方式不同。


setCoorType:  设置返回值坐标类型  
         bd09ll  表示百度经纬度坐标,
         gcj02   表示经过国测局加密的坐标,
         wgs84   表示gps获取的坐标。

下方代码是不是很熟悉,加上红色字体所示内容即可

LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
        //可选,默认高精度,设置定位模式,高精度,低功耗,仅设备

        option.setCoorType("bd09ll");
        //可选,默认gcj02,设置返回的定位结果坐标系,测试的时候发现这个最好不要注掉,不然定位不准确

        int span = 1000;
        option.setScanSpan(span);
        //可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的

        option.setIsNeedAddress(true);
        //可选,设置是否需要地址信息,默认不需要

        option.setOpenGps(true);
        //可选,默认false,设置是否使用gps

        option.setLocationNotify(true);
        //可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果

        option.setIsNeedLocationDescribe(true);
        //可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”

        option.setIsNeedLocationPoiList(true);
        //可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到

        option.setIgnoreKillProcess(false);
        //可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死

        option.setNeedDeviceDirect(true);
        option.SetIgnoreCacheException(false);
        //可选,默认false,设置是否收集CRASH信息,默认收集

        option.setEnableSimulateGps(false);
        //可选,默认false,设置是否需要过滤GPS仿真结果,默认需要



你可能感兴趣的:(Android)