天天看點

百度地圖定位不準

簡述

在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仿真結果,預設需要