定位CoreLocation 使用
xcode 5 以上 需要自己倒入CoreLocation.framework 库
然后使用的时候在倒入头文件
#import <CoreLocation/CoreLocation.h>
xcode 5 以上不用手动倒入库,直接倒入头文件即可
corelocation 这个使用 ios 7 和 ios 8 使用有区别
在ios 7 中使用定位3部
1.创建管理者
// CLLocationManager *mgr = [[CLLocationManager alloc] init];
由于定位是实时的,所以需要一直保持创建的管理者是不死的
@property(nonatomic,strong)clloctionManger *mgr;
然后做懒加载,保证mgr不为空
- (CLLocationManager *)mgr {if (!_mgr) {_mgr = [[CLLocationManager alloc] init];}return _mgr; }
2,开始定位
[self.mgr startUpdatingLocation];
3,为了能够监听,实现代理
<CLLocationManagerDelegate>
self.mgr.delegate=self;//开始定位的时候,调用代理的这个方法 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{NSLog(@"%s", __func__);// 如果只需要获取一次, 可以获取到位置之后就停止 // [self.mgr stopUpdatingLocation];}
ios 8 中使用和ios 7 中有差别
viewController.m
#import "ViewController.h" #import <CoreLocation/CoreLocation.h>@interface ViewController ()<CLLocationManagerDelegate> /*** 定位管理者*/ @property (nonatomic ,strong) CLLocationManager *mgr; @end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.// 1.创建CoreLocation管理者 // CLLocationManager *mgr = [[CLLocationManager alloc] init];// 2.成为CoreLocation管理者的代理监听获取到的位置self.mgr.delegate = self;// 设置多久获取一次 // self.mgr.distanceFilter = 500;// 设置获取位置的精确度/*kCLLocationAccuracyBestForNavigation 最佳导航kCLLocationAccuracyBest; 最精准kCLLocationAccuracyNearestTenMeters; 10米kCLLocationAccuracyHundredMeters; 百米kCLLocationAccuracyKilometer; 千米kCLLocationAccuracyThreeKilometers; 3千米*/ // self.mgr.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;/*注意: iOS7只要开始定位, 系统就会自动要求用户对你的应用程序授权. 但是从iOS8开始, 想要定位必须先"自己""主动"要求用户授权在iOS8中不仅仅要主动请求授权, 而且必须再info.plist文件中配置一项属性才能弹出授权窗口NSLocationWhenInUseDescription,允许在前台获取GPS的描述NSLocationAlwaysUsageDescription,允许在后台获取GPS的描述*/// 判断是否是iOS8if([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0){NSLog(@"是iOS8");// 主动要求用户对我们的程序授权, 授权状态改变就会通知代理// [self.mgr requestAlwaysAuthorization]; // 请求前台和后台定位权限 // [self.mgr requestWhenInUseAuthorization];// 请求前台定位权限}else{NSLog(@"是iOS7");// 3.开始监听(开始获取位置) [self.mgr startUpdatingLocation];}}/*** 授权状态发生改变时调用** @param manager 触发事件的对象* @param status 当前授权的状态*/ - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {/*用户从未选择过权限kCLAuthorizationStatusNotDetermined无法使用定位服务,该状态用户无法改变kCLAuthorizationStatusRestricted用户拒绝该应用使用定位服务,或是定位服务总开关处于关闭状态kCLAuthorizationStatusDenied已经授权(废弃)kCLAuthorizationStatusAuthorized用户允许该程序无论何时都可以使用地理信息kCLAuthorizationStatusAuthorizedAlways用户同意程序在可见时使用地理位置kCLAuthorizationStatusAuthorizedWhenInUse*/if (status == kCLAuthorizationStatusNotDetermined) {NSLog(@"等待用户授权");}else if (status == kCLAuthorizationStatusAuthorizedAlways ||status == kCLAuthorizationStatusAuthorizedWhenInUse){NSLog(@"授权成功");// 开始定位 [self.mgr startUpdatingLocation];}else{NSLog(@"授权失败");} }#pragma mark - CLLocationManagerDelegate //- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation /*** 获取到位置信息之后就会调用(调用频率非常高)** @param manager 触发事件的对象* @param locations 获取到的位置*/ - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {NSLog(@"%s", __func__);// 如果只需要获取一次, 可以获取到位置之后就停止 // [self.mgr stopUpdatingLocation]; }#pragma mark - 懒加载 - (CLLocationManager *)mgr {if (!_mgr) {_mgr = [[CLLocationManager alloc] init];}return _mgr; } @end
ios 8 需要在infp.plist文件中添加
NSLocationAlwaysUsageDescription String iOS8请求授权(可更换写其他)
这项
转载于:https://www.cnblogs.com/lizhan1991/p/4895178.html
定位CoreLocation 使用相关推荐
- 定位 - CoreLocation - 打印位置信息
1. 导入框架 <CoreLocation.framework>, 引入头文件 import <CoreLocation/CoreLocation.h>; 2. 创建管理者对象 ...
- iOS学习笔记19 地图(一)定位CoreLocation
###一.定位介绍 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式. ...
- iOS 定位(CoreLocation)
在很多LBS的应用中我们都可以看到定位的使用.如下面美团外卖选择城市的页面. 下面我们就实现一个定位Demo,并将获取到的定位城市展示到页面上. iOS系统已经封装了一个用于定位的类库Co ...
- iOS开发 --- 定位功能(系统框架CoreLocation)
最近在做定位功能,只需要获取当前位置信息,包括经纬度.位置等,不需要持续获取. 对CoreLocation的封装.将定位相关的代码从 Controller 中分离,封装到 NSObject 对象中.采 ...
- iOS地图定位(Map)
1.地图的简介 在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院 手机软件:微信摇一摇.QQ附近的人. ...
- iOS CoreLocation和MapKit详解
引言 位置定位几乎是App中的不可或缺的功能,功能分为两部分:一部分是使用CoreLocation框架来获取地理位置经纬度:另一部分:使用MapKit将经纬度以UI的形式展示出来. 使用场景 导航软件 ...
- 地图定位及大头针设置
Senior进阶 地图 地图的简介 在移动互联网时代,移动app能解决用户的很多生活琐事,比如导航:去任意陌生的地方 周边:找餐馆.找酒店.找银行.找电影院 手机软件:微信摇一摇.QQ附近的人.微博. ...
- IOS原生地图与高德地图
原生地图 1.什么是LBS LBS: 基于位置的服务 Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位 ...
- html js修改readonly,js控制html元素的readonly属性
html元素假设为只读,那么其readonly="readonly",我们现在想通过js来改变readonly属性为可以输入. 初始时,两个输入框都是只读.点击change按钮后, ...
- iOS攻城狮修炼之路
自己总结的学习iOS的笔记,打造一个全面的知识体系,iOS攻城狮修炼之路[持续更新中] iOS学习笔记01-APP相关 iOS学习笔记02-UIScrollView iOS学习笔记03-UITable ...
最新文章
- SAP RETAIL WB02 为门店激活物料分类账报错 - ML currencies are not integrated in FI for valuation area m123 NMI1 –
- 在selenium中使用css选择器进行元素定位(一)
- s.assign()用法c++_assign是什么意思
- C#中JSON和对象之间互相转换功能示例
- junit 运行_运行,JUnit! 跑!!!
- 把本地仓库建到github
- 接到骗子短信后........
- 二叉树最小单元结点的实现
- Activemq判断队列存活脚本(一)
- PyTorch学习:参数初始化
- 2020年最新世界地图_2020年标准地图发布,为何要发布新版标准地图?
- GPUImage详细解析- 实时美颜滤镜
- 佳能7660cdn 评价_佳能LBP7660Cdn说明书
- cd linux制作u盘启动盘,【cdlinux u盘启动】cdlinux制作U盘启动盘详细教程
- 警告: A docBase inside the host appBase has been specified, and will be ignore2
- mysql远程过程调用失败怎么办_远程过程调用失败且未执行是什么意思
- 电脑上如何录制微信语音聊天
- 从入门到精通,看了这篇文章,你离老黑的路就不远了
- 【城北徐公之机器学习】感知机模型
- 【排序】堆排序详解 附代码
热门文章
- 小白如何购买阿里云服务器(2019最详细教程)
- 关闭所有的screen
- 极棒开启AI挑战 全球寻找顶级语音合成“机械师”
- java.lang.IllegalStateException: Async support must be enabled on a servlet and for all filters invo
- CentOS 6.9之LVM创建,扩容
- SQL Server数据库镜像下有效的索引维护
- 函数除颤/节流提高性能 + 原生实现滚动时到视口时展现
- 计算2的任意次方[通用版]
- AppSettings
- 用FileInputStream和FileOutPutStream读写文件