1. 標(biāo)準(zhǔn)定位服務(wù)
- 基于gps/藍(lán)牙/基站/wifi定位, 具體使用哪種,蘋(píng)果有自己規(guī)則
- 優(yōu)點(diǎn): 定位精確度高
- 缺點(diǎn): 程序關(guān)閉,就沒(méi)法獲取位置 ,而且耗電
2. 顯著位置變化定位服務(wù)
- 基于 基站定位, 必須要求設(shè)備有電話模塊
- 優(yōu)點(diǎn): 當(dāng)app被完全關(guān)閉時(shí),也可以接收到位置通知,并讓app進(jìn)入到后臺(tái)處理
- 缺點(diǎn): 定位精度低
應(yīng)用場(chǎng)景:
如果要求定位及時(shí),精度較高,并且運(yùn)行時(shí)間較短,可使用標(biāo)準(zhǔn)定位;
如果長(zhǎng)時(shí)間監(jiān)控用戶位置,用戶移動(dòng)速度比較快(例如打車(chē)軟件),可使用后者
單次定位
requestLocation 頭文件:
該服務(wù)將嘗試確定定位精度根據(jù)desiredaccuracy屬性。定位更新將通過(guò)標(biāo)準(zhǔn)的代理回調(diào)
如果最佳的可用定位具有較低的精度终畅,那么它將在超時(shí)時(shí)通過(guò)標(biāo)準(zhǔn)的代理回調(diào)籍胯。
如果沒(méi)有定位可以確定,回調(diào)代理方法LocationManager:didfailwitherror:將交付錯(cuò)誤定位不明离福。
只能有一個(gè)突出的定位的要求杖狼,該方法不能同時(shí)使用startUpdatingLocation() 或 allowDeferredLocationUpdates。調(diào)用這些方法將立即取消定位請(qǐng)求妖爷。方法stopUpdatingLocation() 可以用來(lái)明確取消請(qǐng)求蝶涩。
代碼: [self.locationM requestLocation];
功能:獲取一次位置信息
實(shí)現(xiàn)邏輯
- (1) 按照定位精確度從低到高進(jìn)行排序,逐個(gè)進(jìn)行定位.如果在有效時(shí)間內(nèi), 定位到了精確度最好的位置, 那么就把對(duì)應(yīng)的位置通過(guò)代理告知外界.
- (2) 如果獲取到的位置不是精確度最高的那個(gè)絮识,也會(huì)在定位超時(shí)后绿聘,通過(guò)代理告訴外界.
注意事項(xiàng):
1.必須實(shí)現(xiàn)CLLocationManagerDelegate
代理方法
//當(dāng)定位失敗的時(shí)候會(huì)調(diào)用該方法
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print("定位失敗")
}
2.不能與startUpdatingLocation()方法同時(shí)使用