1. 應用場景
周邊信息(lbs): 找餐館,找ktv,找電影院(大眾點評,美團)
導航:根據用戶設定的起點和重點來規劃路線。并指導用戶如何到達。(高德地圖,百度地圖)
(apple 地圖的中國代理商是高德地圖)
熱門術語:
LBS: Location Based Service; 基于定位的服務
SoLoMo:Social Local Mobile (索羅門) 社交本地移動
2. 使用的框架
MapKit : 地圖展示
CoreLocatio : 地理定位
3. Location
Location 的主要功能
- 地理定位: 獲取設備當前經緯度。
- 地理編碼:
- 地理編碼 : 將地理位置信息轉換為經緯度。(湖南,長沙,岳麓區, (28.212875, 112.889938)
- 反地理編碼:將經緯度轉換為地理位置信息。((28.212875, 112.889938), 湖南,長沙,岳麓區 )
- 區域監聽: 在一個區域內確認一個中點,以中點畫圓。 當用戶進入圓或出圓的時候回調代理通知。 通知中會包含是進入還是退出。
- 用到的框架
#import <CoreLocation/CoreLocation.h>
- 主要使用的類:
CLLocationManager
// CLLocationManager位置管理器 使用Core Location框架來確定iphone的位置(GPS,蜂窩基站三角網,wps三種方式)
- 授權
iOS8.0之后前臺定位授權和后臺定位授權
(授權: 主要是 apple 加強的對用戶隱私的保護。 在沒有授權的情況下,用戶是不可能拿到用戶的位置信息。 )
// 主要體現是開啟后臺定位授權
[self.locationManager requestAlwaysAuthorization];
info.plist 配置修改: 添加 NSLocationAlwaysUsageDescription key
2017-03-20 15:03:23.044 Location&Map[20029:4356781] This app has attempted to access privacy-sensitive data without a usage description.
The app's Info.plist must contain an NSLocationAlwaysUsageDescription key with a string value explaining to the user how the app uses this data
后臺開啟定位授權
// 開啟前臺定位授權
[self.locationManager requestWhenInUseAuthorization];
info.plist 配置修改: 添加 NSLocationWhenInUseUsageDescription key
2017-03-20 15:06:44.381 Location&Map[20097:4377840] This app has attempted to access privacy-sensitive data without a usage description.
The app's Info.plist must contain an NSLocationWhenInUseUsageDescription key with a string value explaining to the user how the app uses this data
前臺開啟定位授權
導航開啟標志
- 開始定位 (更新定位信息)
[self.locationManager startUpdatingLocation];
- 獲取定位
定位信息是通過代理回調的。
- 5.1 設置代理
self.locationManager.delegate = self;
- 5.2 實現代理方
// 這個方法調用非常的頻繁,使用的是手機的硬件,非常的耗電。
// 僅僅是用來拿到用戶的位置,拿到之后,就必須停止定位
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
{
// 1.獲取用戶位置的對象(lastObject: 表示獲取的是最新的位置)
CLLocation *location = [locations lastObject];
// 獲取坐標信息
CLLocationCoordinate2D coordinate = location.coordinate;
NSLog(@"緯度:%f 經度:%f", coordinate.latitude, coordinate.longitude);
// 2.停止定位 ( 可以停止代理方法的調用 )
[manager stopUpdatingLocation];
}
```
模擬器是沒有地理位置信息的, 我們可以進行默認設置。

## 4. Location 的項目使用
只要發送一個經緯度發送給服務器,服務器返回一個json文件。json 里面是包含位置信息。( 某一個范圍內的銀行的地理位置,名稱, 電話等信息)