
- Android百度地圖開發(fā)(一):概述
- Android百度地圖開發(fā)(二):項(xiàng)目創(chuàng)建
- Android百度地圖開發(fā)(三):定位
- Android百度地圖開發(fā)(四):創(chuàng)建地圖
- Android百度地圖開發(fā)(五):圖層
- Android百度地圖開發(fā)(六):圖形繪制
- Android百度地圖開發(fā)(七):地圖事件監(jiān)聽
百度定位SDK免費(fèi)對(duì)外開放,接口使用無(wú)次數(shù)限制
百度地圖Android定位SDK提供GPS、基站、WiFi、地磁、藍(lán)牙、傳感器等多種定位方式,適用于室內(nèi)、室外多種定位場(chǎng)景,具有出色的定位性能:定位精度高、覆蓋率廣、網(wǎng)絡(luò)定位請(qǐng)求流量小、定位速度快。

- 權(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)為不需要 |
