ios8之后使用CLLocationManager进行定位
2016-08-12 14:32
519 查看
在ios8或者之后的关于定位的简单使用:
ios8之后使用定位框架有些变化,下面简单了解一下过程首先需要导入框架:CoreLocation.framework
注意:需要配置info.plist文件,增加两个key:NSLocationWhenInUseUsageDescription 和 NSLocationAlwaysUsageDescription,
key值自己写.
配置好文件,写好代码,首次运行安装打开会提示需要获取位置权限
测试代码如下:
#import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewController ()<CLLocationManagerDelegate> @property (nonatomic, strong) CLLocationManager *locationManger; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 1.创建定位管理者 CLLocationManager *locationManager = [[CLLocationManager alloc] init]; self.locationManger = locationManager; // 2.想用户请求授权(iOS8之后方法) 必须要配置info.plist文件 if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) { // 以下方法选择其中一个 // 请求始终授权 无论app在前台或者后台都会定位 // [locationManager requestAlwaysAuthorization]; // 当app使用期间授权 只有app在前台时候才可以授权 [locationManager requestWhenInUseAuthorization]; } // 距离筛选器 单位:米 100米:用户移动了100米后会调用对应的代理方法didUpdateLocations // kCLDistanceFilterNone 使用这个值得话只要用户位置改动就会调用定位 locationManager.distanceFilter = 100.0; // 期望精度 单位:米 100米:表示将100米范围内看做一个位置 导航使用kCLLocationAccuracyBestForNavigation locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; // 3.设置代理 locationManager.delegate = self; // 4.开始定位 (更新位置) [locationManager startUpdatingLocation]; // 5.临时开启后台定位 iOS9新增方法 必须要配置info.plist文件 不然直接崩溃 locationManager.allowsBackgroundLocationUpdates = YES; // 计算两个点之间的直线距离 [self compareDistance]; } // 比较两点之间的距离 --直线距离 - (void)compareDistance { // 北京的位置 CLLocation *location = [[CLLocation alloc] initWithLatitude:39 longitude:115]; // 上海的位置 CLLocation *location1 = [[CLLocation alloc] initWithLatitude:30 longitude:120]; // 比较距离 单位:米 CGFloat distance = [location distanceFromLocation:location1]; // 打印一下距离 NSLog(@"%f",distance / 1000); } // 当定位到用户位置时调用 // 调用非常频繁(耗电) - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations { // 一个CLLocation对象代表一个位置 NSLog(@"%@",locations); // 停止定位 // [manager stopUpdatingLocation]; } @end
相关文章推荐
- ios 对于AFNetworking3.0之前版本的Get、Post请求的封装(直接调用即可)
- ios开发科大讯飞的语音识别
- iOS开发-底层篇-Class详解的讲解
- 浅谈iOS本地数据保存
- iOS,监听tableVIew的偏移量
- iOS开源项目
- iOS开发零碎知识点
- iOS项目功能大全,让你的项目一天搞定
- IOS 图片拉伸技巧
- iOS 修正拍出来的照片的方向
- ios 滤镜
- IOS实现展开二级列表效果
- iOS开发——测试证书的创建
- 设计比较好,有助于学习的Github上的iOS App源码 (中文)
- 设计比较好,有助于学习的Github上的iOS App源码 (中文)
- iOS---取出字符串中的数字
- iOS基础知识之@property 和 Ivar 的区别
- ios 开发之本地推送
- iOS 音乐播放Tool (配Demo下载)
- iOS 实现时间线列表效果