CoreLocation的基本使用
2015-11-08 12:14
253 查看
// // ViewController.m #import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewController ()<CLLocationManagerDelegate> @property(nonatomic,strong)CLLocationManager *locMgr; @end @implementation ViewController /** * 延迟创建定位管理者对象 */ - (CLLocationManager *)locMgr { #warning 如果定位服务不可用,加一个判断 if(![CLLocationManager locationServicesEnabled]) return nil; if (_locMgr == nil) { //创建定位管理者对象 self.locMgr =[[CLLocationManager alloc]init]; //设置代理 self.locMgr.delegate = self; } return _locMgr; } - (void)viewDidLoad { [super viewDidLoad]; /** * 在ios8.0使用CLLocationManager定位服务,发现老不能定位,查看设置菜单中的项也是处于未知状态.想起之前都有一个弹出框提示用户是否允许定位,这次一直没有出现了.原来ios8.0下的定位服务需要申请授权了 */ /** * 在Info.plist文件还要加上NSLocationWhenInUseUsageDescription这个key,Value可以为空, */ if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){ [self.locMgr requestWhenInUseAuthorization]; //调用了这句,就会弹出允许框了. // [self.locMgr requestAlwaysAuthorization]; //在后台也可定位 } //iOS 9可以后台定位 // if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) { // self.locMgr.allowsBackgroundLocationUpdates = YES; // } //开始定位用户的位置 // [self.locMgr startUpdatingLocation]; } /** * 计算直线距离 */ - (void)countLineDistance { //计算2个经纬度之间的直线距离(2地相差一经度或一纬度 为:111公里) CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:40 longitude:116]; CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:41 longitude:116]; CLLocationDistance distance = [loc1 distanceFromLocation:loc2]; NSLog(@"%f",distance); //111044.256206 } #pragma mark -CLLocationManagerDelegate /** * 只要定位到用户的位置,就会调用这个方法(调用频率非常高) * * @param locations 装着CLLocation对象 */ - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations { NSLog(@"didUpdateLocations"); //1.取出位置对象 CLLocation *loc = [locations firstObject]; //2.取出经纬度 CLLocationCoordinate2D coordinate = loc.coordinate; //3.打印经纬度 NSLog(@"经度=%f,纬度=%f",coordinate.longitude,coordinate.latitude); //停止定位(省电措施:只要不想用定位服务,就马上停止定位服务) [manager stopUpdatingLocation]; } @end
相关文章推荐
- Promise 学习笔记 - 时间支配者
- Linux和Windows下开启服务的一些命令
- hdu2016~hdu2022
- 2016大唐移动 在线笔试题
- [转]OpenWRT之获取MAC地址
- light oj -1245 - Harmonic Number (II)
- 埃及分数(迭代加深搜索)
- iOS 计算应用缓存大小
- Android Error retrieving parent for item: No resource found that matches the given name '...'
- 大数据究竟是什么?一篇文章让你认识并读懂大数据
- 将分页程序写成函数
- 黑马程序员-----IO流
- mybatis配置开发
- mybatis配置开发
- 浮动布局和绝对布局
- mybatis配置开发
- AndroidStudio使用问题汇总——导入(import)工程时常见错误
- 算法-排序-归并排序和基数排序(排序总结)
- 百度音乐盒API接口及扩展应用
- zstack的安装