Location&Map

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), 湖南,長沙,岳麓區 )
  • 區域監聽: 在一個區域內確認一個中點,以中點畫圓。 當用戶進入圓或出圓的時候回調代理通知。 通知中會包含是進入還是退出。
  1. 用到的框架
#import <CoreLocation/CoreLocation.h>
  1. 主要使用的類:
CLLocationManager
// CLLocationManager位置管理器  使用Core Location框架來確定iphone的位置(GPS,蜂窩基站三角網,wps三種方式)    
  1. 授權
    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
前臺開啟定位授權

導航開啟標志
  1. 開始定位 (更新定位信息)
[self.locationManager startUpdatingLocation];
  1. 獲取定位
    定位信息是通過代理回調的。
  • 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];
   }
  ```
模擬器是沒有地理位置信息的, 我們可以進行默認設置。
![模擬器經緯度修改](http://upload-images.jianshu.io/upload_images/446092-4f3a0ce1c459fcd9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## 4. Location 的項目使用
只要發送一個經緯度發送給服務器,服務器返回一個json文件。json 里面是包含位置信息。( 某一個范圍內的銀行的地理位置,名稱, 電話等信息)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容