iOS10地图定位 适配各版本

本文介绍了iOS10中CoreLocation框架的定位适配,包括不同版本的授权策略,如iOS8之前的用户授权,iOS8和iOS9的权限请求。同时讲解了CLLocationManager对象的使用,如定位距离过滤、精度设置和代理方法。还涉及到MapKit框架,用于地图展示和大头针操作,以及如何利用系统App进行导航和地图截图。
摘要由CSDN通过智能技术生成

CoreLocation框架

CLLocationManager对象

  • CLLocationManager: 位置管理者,负责对定位进行相关设置

    • 导入头文件
      这里写图片描述

    • distanceFilter: 设置定位距离过滤参数- 以()为单位

      • 当上次定位和本次定位之间的距离 >= 此值时,才会调用代理通知开发者
    • desiredAccuracy: 设置定位精度,是个枚举类型

      • 精确度越高,越耗电,所以需要我们根据实际情况,设定对应的精度
        /** desiredAccuracy */
        // 最适合导航
        kCLLocationAccuracyBestForNavigation 
        // 最好的
        kCLLocationAccuracyBest; 
        // 10m          
        kCLLocationAccuracyNearestTenMeters; 
        // 100m
        kCLLocationAccuracyHundredMeters;   
        // 1000m
        kCLLocationAccuracyKilometer; 
        // 3000m  适用定位城市     
        kCLLocationAccuracyThreeKilometers;  
    • 开始更新用户位置

      - (void)startUpdatingLocation;
      • 当调用了startUpdatingLocation方法后,就开始不断地请求、刷新用户的位置,一旦请求到用户位置就会调用代理的下面方法
        - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
    • 停止更新用户位置

    - (void) stopUpdatingLocation;
    • CLLocationManager有个类方法可以判断当前应用的定位功能是否可用
    + (BOOL)locationServicesEnabled;

iOS各个版本适配

iOS8之前版本

iOS 6开始,苹果在保护用户隐私方面做了很大的加强,以下操作都必须经过用户批准授权
要想获得用户的位置、通讯录、日历、相机、相册等等
当想访问用户的隐私信息时,系统会自动弹出一个对话框让用户授权

这里写图片描述

iOS8版本

iOS 8.0开始,苹果进一步加强了对用户隐私的保护。
当APP想访问用户的隐私信息时,系统不再自动弹出一个对话框让用户授权


解决方案:
调用iOS 8.0的API,主动请求用户授权

/* 请求允许在前后台都能获取用户位置的授权 /
- (void)requestAlwaysAuthorization
/* 请求允许在前台获取用户位置的授权 /
- (void)requestWhenInUseAuthorization

务必在info.plist文件中配置对应的键值, 否则以上请求授权的方法不生效

NSLocationAlwaysUsageDescription: 允许在前后台获取GPS的描述
NSLocationWhenInUseDescription : 允许在前台获取GPS的描述

iOS9版本

iOS 9.0 如果当前处于前台授权状态,默认是不可以后台获取用户位置。但可以设置以下属性为YES,就可以继续获取后台位置,但是会出现蓝条
使用注意:必须设置对应的后台模式:location updates

- BOOL allowsBackgroundLocationUpdates

iOS 9.0 可以单次请求用户位置

 //请求用户位置
 - (void)requestLocation  
 // 成功调用
 -(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations  
 // 失败调用
 -(void)loc
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值