- 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ì)外開放乒裆,接口使用無次數(shù)限制
百度地圖Android定位SDK提供GPS、基站、WiFi怪蔑、地磁捷绑、藍(lán)牙窖认、傳感器等多種定位方式弊攘,適用于室內(nèi)镶柱、室外多種定位場景握爷,具有出色的定位性能:定位精度高跛璧、覆蓋率廣严里、網(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)限用于訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用于訪問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ùn)營商信息相關(guān)的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 這個(gè)權(quán)限用于獲取wifi的獲取權(quán)限座柱,wifi信息會(huì)用來進(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ǎ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è)置下面說明
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é)果信息類景用,通過它的各種get方法可獲取定位相關(guān)的全部結(jié)果
//以下只列舉部分獲取經(jīng)緯度相關(guān)(常用)的結(jié)果信息
//更多結(jié)果信息獲取說明,請(qǐng)參照類參考中BDLocation類中的說明
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è)置過的坐標(biāo)類型為準(zhǔn)
int errorCode = location.getLocType();
//獲取定位類型、定位錯(cuò)誤返回碼盾碗,具體信息可參照類參考中BDLocation類中的說明
}
}
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:國測局坐標(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è)置是否需要過濾GPS仿真結(jié)果门粪,默認(rèn)需要喊积,即參數(shù)為false | |
IsNeedAddress | 是否需要地址信息,默認(rèn)為不需要 | |
IsNeedLocationDescribe | 是否需要位置描述信息玄妈,默認(rèn)為不需要 | |
IsNeedLocationPoiList | 是否需要周邊POI信息乾吻,默認(rèn)為不需要 |