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