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 
  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
Location&Map_第1张图片
后台开启定位授权
// 开启前台定位授权
[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
Location&Map_第2张图片
前台开启定位授权

Location&Map_第3张图片
导航开启标志
  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 里面是包含位置信息。( 某一个范围内的银行的地理位置,名称, 电话等信息)

你可能感兴趣的:(Location&Map)