1. 應(yīng)用場景
周邊信息(lbs): 找餐館肋乍,找ktv,找電影院(大眾點評丁存,美團)
導(dǎo)航:根據(jù)用戶設(shè)定的起點和重點來規(guī)劃路線肩杈。并指導(dǎo)用戶如何到達。(高德地圖解寝,百度地圖)
(apple 地圖的中國代理商是高德地圖)
熱門術(shù)語:
LBS: Location Based Service; 基于定位的服務(wù)
SoLoMo:Social Local Mobile (索羅門) 社交本地移動
2. 使用的框架
MapKit : 地圖展示
CoreLocatio : 地理定位
3. Location
Location 的主要功能
- 地理定位: 獲取設(shè)備當(dāng)前經(jīng)緯度扩然。
- 地理編碼:
- 地理編碼 : 將地理位置信息轉(zhuǎn)換為經(jīng)緯度。(湖南聋伦,長沙夫偶,岳麓區(qū), (28.212875, 112.889938)
- 反地理編碼:將經(jīng)緯度轉(zhuǎn)換為地理位置信息觉增。((28.212875, 112.889938), 湖南兵拢,長沙,岳麓區(qū) )
- 區(qū)域監(jiān)聽: 在一個區(qū)域內(nèi)確認一個中點逾礁,以中點畫圓说铃。 當(dāng)用戶進入圓或出圓的時候回調(diào)代理通知。 通知中會包含是進入還是退出。
- 用到的框架
#import <CoreLocation/CoreLocation.h>
- 主要使用的類:
CLLocationManager
// CLLocationManager位置管理器 使用Core Location框架來確定iphone的位置(GPS截汪,蜂窩基站三角網(wǎng)疾牲,wps三種方式)
- 授權(quán)
iOS8.0之后前臺定位授權(quán)和后臺定位授權(quán)
(授權(quán): 主要是 apple 加強的對用戶隱私的保護。 在沒有授權(quán)的情況下衙解,用戶是不可能拿到用戶的位置信息阳柔。 )
// 主要體現(xiàn)是開啟后臺定位授權(quán)
[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
后臺開啟定位授權(quán)
// 開啟前臺定位授權(quán)
[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
前臺開啟定位授權(quán)
導(dǎo)航開啟標(biāo)志
- 開始定位 (更新定位信息)
[self.locationManager startUpdatingLocation];
- 獲取定位
定位信息是通過代理回調(diào)的。
- 5.1 設(shè)置代理
self.locationManager.delegate = self;
- 5.2 實現(xiàn)代理方
// 這個方法調(diào)用非常的頻繁蚓峦,使用的是手機的硬件舌剂,非常的耗電。
// 僅僅是用來拿到用戶的位置暑椰,拿到之后霍转,就必須停止定位
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
{
// 1.獲取用戶位置的對象(lastObject: 表示獲取的是最新的位置)
CLLocation *location = [locations lastObject];
// 獲取坐標(biāo)信息
CLLocationCoordinate2D coordinate = location.coordinate;
NSLog(@"緯度:%f 經(jīng)度:%f", coordinate.latitude, coordinate.longitude);
// 2.停止定位 ( 可以停止代理方法的調(diào)用 )
[manager stopUpdatingLocation];
}
```
模擬器是沒有地理位置信息的, 我們可以進行默認設(shè)置一汽。

## 4. Location 的項目使用
只要發(fā)送一個經(jīng)緯度發(fā)送給服務(wù)器避消,服務(wù)器返回一個json文件。json 里面是包含位置信息召夹。( 某一個范圍內(nèi)的銀行的地理位置岩喷,名稱, 電話等信息)