Android百度地圖開發(fā)(三):定位

百度定位SDK免費(fèi)對(duì)外開放,接口使用無(wú)次數(shù)限制

百度地圖Android定位SDK提供GPS、基站、WiFi、地磁、藍(lán)牙、傳感器等多種定位方式,適用于室內(nèi)、室外多種定位場(chǎng)景,具有出色的定位性能:定位精度高、覆蓋率廣、網(wǎng)絡(luò)定位請(qǐng)求流量小、定位速度快。


  1. 權(quán)限配置
<!-- 這個(gè)權(quán)限用于進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 這個(gè)權(quán)限用于訪問(wèn)GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于訪問(wèn)wifi網(wǎng)絡(luò)信息,wifi信息會(huì)用于進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 獲取運(yùn)營(yíng)商信息,用于支持提供運(yùn)營(yíng)商信息相關(guān)的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 這個(gè)權(quán)限用于獲取wifi的獲取權(quán)限,wifi信息會(huì)用來(lái)進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 用于讀取手機(jī)當(dāng)前的狀態(tài)-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!-- 寫入擴(kuò)展存儲(chǔ),向擴(kuò)展卡寫入數(shù)據(jù),用于寫入離線定位數(shù)據(jù)-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 訪問(wèn)網(wǎng)絡(luò),網(wǎng)絡(luò)定位需要上網(wǎng)-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡讀取權(quán)限,用戶寫入離線定位數(shù)據(jù)-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

定位SDK這要涉及到三個(gè)類

  • LocationClient
  • LocationClientOption //定位配置
  • BDAbstractLocationListener //定位信息回調(diào)
    //初始化
    //請(qǐng)?jiān)谥骶€程中聲明LocationClient類對(duì)象,該對(duì)象初始化需傳入Context類型參數(shù) 
    LocationClient mLocationClient = new LocationClient(getApplicationContext());    
    mLocationClient.registerLocationListener(BDAbstractLocationListener);     //回調(diào)

    LocationClientOption option = new LocationClientOption();
    option.setLocationMode(LocationMode.Hight_Accuracy);
    ......//具體設(shè)置下面說(shuō)明
    mLocationClient.setLocOption(option);

    //定位的方式分為單次定位和定時(shí)定位,在LocationClientOption配置
    mLocationClient.start();  //開始定位
    mLocationClient.stop();  //結(jié)束定位,可以在定位返回的時(shí)候暫停定位服務(wù)


    public class MyLocationListener implements BDAbstractLocationListener{
        @Override
        public void onReceiveLocation(BDLocation location){
            //此處的BDLocation為定位結(jié)果信息類,通過(guò)它的各種get方法可獲取定位相關(guān)的全部結(jié)果
            //以下只列舉部分獲取經(jīng)緯度相關(guān)(常用)的結(jié)果信息
            //更多結(jié)果信息獲取說(shuō)明,請(qǐng)參照類參考中BDLocation類中的說(shuō)明
            
            double latitude = location.getLatitude();    //獲取緯度信息
            double longitude = location.getLongitude();    //獲取經(jīng)度信息
            float radius = location.getRadius();    //獲取定位精度,默認(rèn)值為0.0f
            
            String coorType = location.getCoorType();
            //獲取經(jīng)緯度坐標(biāo)類型,以LocationClientOption中設(shè)置過(guò)的坐標(biāo)類型為準(zhǔn)
            
            int errorCode = location.getLocType();
            //獲取定位類型、定位錯(cuò)誤返回碼,具體信息可參照類參考中BDLocation類中的說(shuō)明
    }
}

LocationClientOption

Setting Describe Option
LocationMode 設(shè)置定位模式,默認(rèn)高精度 LocationMode.Hight_Accuracy:高精度
LocationMode. Battery_Saving:低功耗
LocationMode. Device_Sensors:僅使用設(shè)備
CoorType 設(shè)置返回經(jīng)緯度坐標(biāo)類型,默認(rèn)gcj02 gcj02:國(guó)測(cè)局坐標(biāo)
bd09ll:百度經(jīng)緯度坐標(biāo)
bd09:百度墨卡托坐標(biāo)
ScanSpan 設(shè)置發(fā)起定位請(qǐng)求的間隔,int類型,單位ms 如果設(shè)置為0,則代表單次定位,即僅定位一次,默認(rèn)為0
如果設(shè)置非0,需設(shè)置1000ms以上才有效
OpenGps 設(shè)置是否使用gps,默認(rèn)false。
使用高精度和僅用設(shè)備兩種定位模式的,參數(shù)必須設(shè)置為true
LocationNotify 設(shè)置是否當(dāng)GPS有效時(shí)按照1S/1次頻率輸出GPS結(jié)果,默認(rèn)false
IgnoreKillProcess 定位SDK內(nèi)部是一個(gè)service,并放到了獨(dú)立進(jìn)程。
設(shè)置是否在stop的時(shí)候殺死這個(gè)進(jìn)程,默認(rèn)(建議)不殺死,即setIgnoreKillProcess(true)
IgnoreCacheException 設(shè)置是否收集Crash信息,默認(rèn)收集,即參數(shù)為false
WifiCacheTimeOut 如果設(shè)置了該接口,首次啟動(dòng)定位時(shí),會(huì)先判斷當(dāng)前WiFi是否超出有效期,若超出有效期,會(huì)先重新掃描WiFi,然后定位
EnableSimulateGps 設(shè)置是否需要過(guò)濾GPS仿真結(jié)果,默認(rèn)需要,即參數(shù)為false
IsNeedAddress 是否需要地址信息,默認(rèn)為不需要
IsNeedLocationDescribe 是否需要位置描述信息,默認(rèn)為不需要
IsNeedLocationPoiList 是否需要周邊POI信息,默認(rèn)為不需要

>>>>>>>Demo地址<<<<<<<

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容