// 在iOS中,定位服务API主要使用CoreLocation框架,
/*CLLocationManager 用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以或得设备的运行方向等。CLLocationManagerDelegate CLLocationManager 类的委托协议。CLLocation 改类封装了位置和高度信息打开定位服务:设置->隐私->定位服务->XX 应用*/// 1、导入CoreLocation 框架
#import <CoreLocation/CoreLocation.h>// 2、遵守 协议
@interface OnePositionViewController ()<CLLocationManagerDelegate>
{// 3、定义了CLLocationManager 属性CLLocationManager *_manager;CLGeocoder *_geocoder;}@property (nonatomic,strong)CLGeocoder *geocoder;
@property (weak, nonatomic) IBOutlet UILabel *latLabel;
@property (weak, nonatomic) IBOutlet UILabel *lngLabel;
@property (weak, nonatomic) IBOutlet UILabel *altLabel;
@property (weak, nonatomic) IBOutlet UILabel *locationLabel;@end@implementation OnePositionViewController-(CLGeocoder *)geocoder{if (!_geocoder) {_geocoder = [[CLGeocoder alloc] init];}return _geocoder;}- (void)viewDidLoad {[super viewDidLoad];self.title = @"地理定位和地理信息反编码";if (![CLLocationManager locationServicesEnabled]) {NSLog(@"用户关闭了定位");return;}// 创建并初始化locationManager 属性,_manager = [[CLLocationManager alloc] init];_manager.delegate = self;// 精确度  精确度越高,请求获得位置信息的时间就越短,设备越耗电/*kCLLocationAccuracyBestForNavigation   导航情况下最高的精确度,一般有外接电源时才能使用 (车载导航)kCLLocationAccuracyBest;               设备使用电池供应时最高的精确度。kCLLocationAccuracyNearestTenMeters;   精确到10米kCLLocationAccuracyHundredMeters;      精确到100米 (徒步旅行者的应用)kCLLocationAccuracyKilometer;          精确到1000米kCLLocationAccuracyThreeKilometers;    精确到3000米*/_manager.desiredAccuracy = kCLLocationAccuracyBest;// 设置距离过滤器,定义了设备移动后获得位置信息的最小距离。单位是米_manager.distanceFilter = 1000.0f;// 弹出用户授权提示框  修改工程配置文件   NSLocationAlwaysUsageDescription 和 NSLocationWhenInUseUsageDescription.if ([_manager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {[_manager requestAlwaysAuthorization];}// 开始定位,也可以放在 viewWillAppear 中调用,在[_manager startUpdatingLocation];}//- (void)viewWillAppear:(BOOL)animated{//    [super viewWillAppear:animated];
//
//    // 开始定位
//    [_manager startUpdatingLocation];
//}
//
//- (void)viewWillDisappear:(BOOL)animated{//    [super viewDidAppear:animated];
//    // 停止定位
//    [_manager stopUpdatingLocation];
//}#pragma mark -------- 授权状态发生变化时调用
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {switch (status) {case kCLAuthorizationStatusNotDetermined:if ([manager respondsToSelector:@selector(requestAlwaysAuthorization)]) {[manager requestWhenInUseAuthorization];}break;default:break;}
}#pragma mark - ------------ 定位成功
- (void)locationManager:(CLLocationManager *)managerdidUpdateLocations:(NSArray<CLLocation *> *)locations{//    NSLog(@"locations = %@",locations);CLLocation *location = locations.lastObject;NSLog(@"经度:%f",location.coordinate.latitude);NSLog(@"纬度:%f",location.coordinate.longitude);NSLog(@"高度:%f",location.altitude);self.latLabel.text = [NSString stringWithFormat:@"经度:%f",location.coordinate.latitude];self.lngLabel.text = [NSString stringWithFormat:@"纬度:%f",location.coordinate.longitude];self.altLabel.text = [NSString stringWithFormat:@"高度:%f",location.altitude];//    location.coordinate.latitude//    location.coordinate.longitude//根据经纬度解析地理位置[self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {if (!error) {CLPlacemark *placemark = placemarks[0];NSLog(@"address = %@",placemark.addressDictionary);NSDictionary *addressDictionary = placemark.addressDictionary;// 国家NSString *address = addressDictionary[@"Country"];// 省份NSString *addressState = addressDictionary[@"State"];// 城市NSString *addressCity = addressDictionary[@"City"];// 区域NSString *addressSubLocality = addressDictionary[@"SubLocality"];// 街道NSString *addressThoroughfare = addressDictionary[@"Thoroughfare"];self.locationLabel.text = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",address,addressState,addressCity,addressSubLocality,addressThoroughfare];
//
//            for (NSString *key in placemark.addressDictionary.allKeys) {//                NSLog(@"%@:%@",key,placemark.addressDictionary[key]);
//            }[_manager stopUpdatingLocation];}else{NSLog(@"error:%@",error);}}];
}#pragma mark ------- 定位失败
- (void)locationManager:(CLLocationManager *)managerdidFailWithError:(NSError *)error{NSLog(@"error :%@",error);}

iOS定位服务 CoreLocation相关推荐

  1. iOS定位服务CoreLocation

    欢迎訪问我的新博客: 开发人员说 基于LBS的应用开发是当今移动开发中的一大热门, 当中主要涉及到地图和定位两个方面. iOS开发中, 定位服务依赖于CoreLocation框架, CLLocatio ...

  2. iOS定位服务与地图应用开发:高德地图开发

    2019独角兽企业重金招聘Python工程师标准>>> 由于博客迁移至www.coderyi.com,文章请看http://www.coderyi.com/archives/419 ...

  3. iOS 定位服务编程详解

    现在的移动设备很多都提供定位服务,使用iOS系统的iPhone.iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星 i ...

  4. iOS 定位服务与地图

    CoreLocation(定位与地理编码等) 使用步骤: 导入CoreLocation库 创建CLLocationManager对象 请求用户授权 - 需要在Info.plist中加入 NSLocat ...

  5. iOS定位服务系列之一:获取当前位置信息

     最近的一个业务涉及地图相关的服务,由于时间比较紧,所以借鉴了网上一些大神的代码,总算是交了差.现在回想起来,当初的自己是多么的窘迫,上网查看,铺天盖地的博文,每篇都是华丽丽的几大页,功能也都能满 ...

  6. iOS 定位服务的权限与规则——WWDC2019学习总结

    一.Core Location Core Location是iOS系统级别定位服务框架,iOS所有定位服务相关功能都与它相关 工作原理简介: 遍历过所有APP之后一段时间,系统会将event自动清除 ...

  7. iOS定位服务与地图开发(3)---地理信息编码查询

    即根据一个NSString的文字描述对象获取相关的地理坐标. 采用CLGeocoder类操作,具体方法: 1>geocodeAddressDictionary:completionHandler ...

  8. iOS定位服务与地图开发(6)---使用程序外地图之调用谷歌Web地图

    也可以借助于谷歌的web地图API进行开发地图应用程序,但这里所涉及的技术都是Web技术了,而非本地技术. 谷歌提供的地图查询URL形式如下:http://maps.google.com/maps?q ...

  9. iOS项目开发— CoreLocation的定位服务和地理编码与发编码实现

      一.CoreLocation简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如 (1)导航:去任意陌生的地方 (2)周边:找餐馆.找酒店.找银行.找电影院 2.在上述应用中,都用 ...

最新文章

  1. 计算机一级ps2019,2019年计算机一级考试PS基础学习点子:PS菜单中英文对照表.docx...
  2. java中的几个概念的比较
  3. VRPM包安装失败解决方案:had non-zero exit status
  4. python的类的super()
  5. 刷题练习记录(3)——无重复字符的最长子串(JAVA 和 Python)——set()函数/集合...
  6. 综合中央计算机系统简称,全国计算机等级考试级试题及答案.doc
  7. C++ 与Qt开发人机象棋(第一部分)
  8. myisam读取速度为什么比innodb快_为什么MySQL用B+树做索引
  9. 编写python程序、找出100_100+ Python挑战性编程练习(1)
  10. java web课程报告_java web课程设计报告.doc
  11. 文献阅读-深度学习跨模态图文检索研究综述
  12. 非网络打印机/扫描仪无线解决方案
  13. Backtrader(二十三)- 多股票回测
  14. ☀️光天化日学C语言☀️(09)- 算术运算符 | 小学就会了?温故而知新,可以为师矣!
  15. K8s系列之:网络原理
  16. iphone 自定义铃声制作
  17. 腾讯云服务器性能评测:配置参数16核 32G 28M
  18. 最新全国手机号码归属地信息SQLite数据库2019年2月更新
  19. 无法登陆github官网的问题(能ping通但打不开网页)
  20. 泛娱乐生态倒逼,各大视频为何抢位3D动画?

热门文章

  1. DOS常用命令及进制转换
  2. apk破解(一)从最简单的判断开始
  3. Java编写的(骑士)飞行棋
  4. 201671010447杨露露 实验四软件工程结对项目
  5. STM32配合cubeMX硬件I2C驱动0.96寸OLED
  6. 让安全团队快速倒闭的十条建议
  7. proto定义嵌套列表
  8. 【IC设计】Synopsys数字IC设计流程
  9. Livox系列激光雷达*.lvx格式数据解算
  10. 微信小程序 动态计算图片大小