坐標(biāo)體系
- WGS84: 大地坐標(biāo)系,廣泛使用的 GPS 定位系統(tǒng)采用的坐標(biāo)系.
- GCJ02: 火星坐標(biāo)系,由中國(guó)測(cè)繪局對(duì) WGS84進(jìn)行加密后得到的坐標(biāo)系.
- BD09: 百度坐標(biāo),針對(duì)火星坐標(biāo)再次加密所得BD09II 位百度經(jīng)緯度坐標(biāo), BD09mc 為百度墨卡托米制坐標(biāo)
地圖 SDK 采用哪種坐標(biāo)體系
百度地圖 SKD | 高德地圖 SKD | GPS 設(shè)備(蘋果,安卓手機(jī)) | |
---|---|---|---|
WGS84 | √ | ||
GCJ02 | √查看 | ||
BD09 | √查看 |
ios實(shí)現(xiàn)后臺(tái)定位
需求: 要求定時(shí)上傳用戶的經(jīng)緯度,無論App 在前臺(tái)還是后臺(tái).
-
準(zhǔn)備工作
- info.plist 文件中添加必要字段
-
NSLocationUsageDescription已經(jīng)用不到了 - NSLocationWhenInUseUsageDescription(簡(jiǎn)單的前臺(tái)定位)
- NSLocationAlwaysUsageDescription(后臺(tái)定位,要適配 iOS10之前的版本這個(gè)也要添加上)
- NSLocationAlwaysAndWhenInUseUsageDescription(后臺(tái)定位iOS10及以后)
-
- 開啟后臺(tái)定位開關(guān)
- TARGETS -->Capbilities -->Background Modes打開
- 選中Location updates
- info.plist 文件中添加必要字段
-
編寫代碼參考官方
-
創(chuàng)建定位管理者
- (CLLocationManager *)locationManager { if (_locationManager == nil) { _locationManager = [[CLLocationManager alloc]init]; _locationManager.delegate = self; _locationManager.distanceFilter = kCLDistanceFilterNone; _locationManager.allowsBackgroundLocationUpdates = YES; _locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; } return _locationManager; }
-
請(qǐng)求授權(quán),并開始定位
- (void)startUpdateLocation { //請(qǐng)求后臺(tái)定位授權(quán) [self.locationManager requestAlwaysAuthorization]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.locationManager startUpdatingLocation]; }); }
-
踩坑
-
授權(quán)后臺(tái)定位彈窗
Simulator Screen Shot - iPhone X - 2018-01-05 at 15.51.31.png-
解決辦法
- requestAlwaysAuthorization之后過幾秒鐘后執(zhí)行 startUpdatingLocation方法.
-
踩到這個(gè)坑的原因.
- 不知道 info.plist 文件中的幾個(gè) key 的含義
- 不知道這個(gè)方法的含義requestAlwaysAuthorization 請(qǐng)求后臺(tái)定位授權(quán)
- 不知道這個(gè)方法的含義requestWhenInUseAuthorization 請(qǐng)求前臺(tái)定位授權(quán)
- 請(qǐng)求后臺(tái)定位授權(quán)后,立即執(zhí)行startUpdatingLocation,僅僅彈出前臺(tái)授權(quán)的彈窗(這個(gè)坑找了好久好久).
-
-
藍(lán)條出現(xiàn)的情況
- 在執(zhí)行后臺(tái)定位,但是后臺(tái)定位權(quán)限就會(huì)出現(xiàn)藍(lán)條
- 查看 APP 當(dāng)前定位權(quán)限的方法
- 設(shè)置 -->隱私 -->定位服務(wù) -->查看自己的 APP 的授權(quán)
- 執(zhí)行的代碼大于當(dāng)前的授權(quán)的時(shí)就會(huì)出現(xiàn)藍(lán)條
-
崩潰發(fā)生在 startUpdateLocation
- TARGETS -->Capbilities -->Background Modes關(guān)閉再打開一次
坐標(biāo)體系轉(zhuǎn)換
- 網(wǎng)上已經(jīng)有現(xiàn)成的輪子了坐標(biāo)轉(zhuǎn)換
- 坐標(biāo)轉(zhuǎn)換:
- WGS84 <-->數(shù)學(xué)運(yùn)算 <--> GCJ02 <-->數(shù)學(xué)運(yùn)算 <-->BD09
- 放出我的 demo