IOS -定位(一)

定位
  一、介绍
    1、定位 使用CoreLocation框架
    2、功能
     (1)基础定位
     (2)地理编码(把文字位置转换成地理位置编码) 反编码(把编码转换成文字位置)
    3、ios8 ios9之后的改变
     (1)添加了定位服务的目的
         《1》NSLocationAlwaysUsageDescription
         《2》NSLocationWhenInUseUsageDescription (写在info.plist里面,作为使用定位功能的提示文字 可以同时出现)
         《3》如果忘记写 就不能使用定位功能,并且没有任何提示信息
     (2)需要请求用户授权
          《1》requestAlwaysAuthorization
          《2》requestWhenInUseAuthorization
      (3)ios9 喊Home键进入后台 如果需要继续定位
          《1》需要在Info.plist文件里面添加Required background modes---->数组里面添加App registers for location updates   如果不添加这对键值,却使用后台定位功能会直接崩溃
          《2》在代码里面 allowsBackgroundLocationUpdates 需要将这个属性设置成YES,满足《1》、《2》才可以使用定位
  二、使用
    1、使用定位服务所需的相关类和其他数据类型
    (1)CLLocationManager  定位的管理者 可以通过这个类创建定位服务的功能
    (2)CLLocation  地理位置信息相关的类
    (3)CLLocationCoordinate2D  经纬度的一个信息类型 坐标的数据类型(结构体)
    (4)CLRegion  表示范围的类
    (5)CLGeocoder   地理编码  反地理编码的类
    (6)CLPlacemark  表示地标的类(用文字表示出来的) 里面包含了location
    (7)CLHeading  表示导航方向的类 航向
    2、具体使用
     (1)定位

          《0》检查用户是否在设置中 打开了定位服务

[CLLocationManager locationServicesEnabled];
    if (![CLLocationManager locationServicesEnabled]) { if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
    };


          《1》初始化定位对象

    locationManagers = [[CLLocationManager alloc]init];


          《2》info中添加描述用使用定位的目的,并向用户申请授权

                      [locationManagers requestAlwaysAuthorization];

          《3》挂上代理  并实现代理方法

                   locationManagers.delegate = self;

          《4》如果需要使用后台定位服务需要在 info中添加Required background modes 这个key 以及它里面的元素App registers for location updates

          添加完毕后,是否使用定位功能。

 locationManagers.allowsBackgroundLocationUpdates = YES;


          《5》开始定位
    
 [locationManagers startUpdatingLocation];


猜你喜欢

转载自blog.csdn.net/timeless_recall/article/details/50824385
今日推荐