ios中关于系统定位CLLocationManager的使用解析
//1、添加定位管理委托协议 CLLocationManagerDelegate
//2、初始化定位管理对象
self.locationManager=[[CLLocationManager alloc]init];
self.locationManager.delegate=self;
//定位精度
self.locationManager.desiredAccuracy=kCLLocationAccuracyBest;
//多长距离更新一次位置
self.locationManager.distanceFilter=50;
if (UIDevice.currentDevice.systemVersion.integerValue>8.0)
{
[self.locationManager requestAlwaysAuthorization];
[self.locationManager requestWhenInUseAuthorization];
}
//开启定位服务
if (self.locationManager.locationServicesEnabled) {
[self.locationManager startUpdatingLocation];
}
//3、调用系统定位方法
#pragma mark - CLLocation Delegate
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
switch (status)
{
case kCLAuthorizationStatusNotDetermined:
if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
{
[_locationManager requestAlwaysAuthorization];
}
break;
default:
break;
}
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
//获取当前位置信息
CLLocation *location = [locations objectAtIndex:0];
//判断是否是在国内
if (![WGS84TOGCJ02 isLocationOutOfChina:[location coordinate]])
{
//设置锁,防止并发写入
[[NSUserDefaults standardUserDefaults] synchronize];
//转换后的coord
CLLocationCoordinate2D coord = [WGS84TOGCJ02 transformFromWGSToGCJ:[location coordinate]];
_myCoordinate = coord;
[[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%f",_myCoordinate.latitude] forKey:KCurrentLat];
[[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%f",_myCoordinate.longitude] forKey:KCurrentLng];
}
//创建反地理编码对象
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
//将经纬度信息转换成字符串位置信息
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *array, NSError *error)
{
// NSLog(@"placemark:%@",array);
if (array.count > 0)
{
CLPlacemark *placemark = [array objectAtIndex:0];
if (![DGFunction xfunc_check_strEmpty:placemark.locality])
{
[[ NSUserDefaults standardUserDefaults] setObject:placemark.locality forKey:@"localCity"];
[[NSUserDefaults standardUserDefaults] synchronize];
// NSDictionary *dic = @{@"city":placemark.locality};
if (![DGFunction xfunc_check_strEmpty:placemark.locality]) {
[[NSUserDefaults standardUserDefaults] setObject:placemark.administrativeArea forKey:k_Current_Province];
}
if (![DGFunction xfunc_check_strEmpty:placemark.locality]) {
[[NSUserDefaults standardUserDefaults] setObject:placemark.locality forKey:k_Current_City];
}
if (![DGFunction xfunc_check_strEmpty:placemark.subLocality]) {
[[NSUserDefaults standardUserDefaults] setObject:placemark.subLocality forKey:k_Current_Area];
}
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"locality:%@ subLocality:%@",placemark.locality,placemark.subLocality);
//关闭定位服务
[_locationManager stopUpdatingLocation];
}
}
}];
}
ios中关于系统定位CLLocationManager的使用解析的更多相关文章
- ios 苹果原生系统定位 CLLocationManager
首先要干这些事 下面的方法亲测可用 ------------------------------------------------------------ DNLogFUNC //初始化位置管理对象 ...
- IOS中调用系统的电话、短信、邮件、浏览功能
iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评 ...
- iOS - (利用/调用系统定位获取当前经纬度与地理信息)
这些天做iOS项目的时候,需要通过定位来拿到当期城市的名称.百度地图SDK有这个功能,但为了不依赖第三方,这里使用iOS自带框架CoreLocation来实现这个需求.iOS8出来之后,针对定位需要多 ...
- iOS中获取系统相册中的图片
一.获取单张图片 思路: 1.利用UIImagePickerController可以从系统自带的App(照片\相机)中获得图片 2.设置代理,遵守代理协议 注意这个UIImagePickerContr ...
- [BS-04] 在iOS中对系统定义的类的readonly属性可通过KVC进行赋值
系统提供的类的readonly属性可通过KVC进行赋值 UITabBarController.h @interface UITabBarController : UIViewController &l ...
- iOS中调用系统录音功能及其播放
最近做的项目中,用到了录音的功能,简单记录一下. 我的想法是:通过重写button的点击事件,来达到录音的目的. /*----------------------------------[录音]--- ...
- iOS中打印系统详细日志
Q:如何打印当前的函数和行号? A:我们可以在打印时使用一些预编译宏作为打印参数,来打印当前的函数和行号.如: 1 NSLog(@"%s:%d obj=%@", __func__, ...
- iOS中 自定义系统相机 作者:韩俊强
需要框架: #import <AVFoundation/AVFoundation.h> #import <AssetsLibrary/AssetsLibrary.h> 布局如下 ...
- IOS中调用系统拨打电话发送短信
一.调用打电话界面 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat ...
随机推荐
- Luogu P4271 [USACO18FEB]New Barns P
题意 给一个一开始没有点的图,有 \(q\) 次操作,每次为加点连边或者查询一个点到连通块内所有点的距离最大值. \(\texttt{Data Range}:1\leq q\leq 10^5\) 题解 ...
- nginx处理vue打包文件后的跨域问题
起因 在vue文件打包后,项目脱离了vue配置的反向代理配置,还是会报跨域的错误,或者直接打不开本地文件, 但是此刻我们想打开打包后的文件,测试一下文件有没有错误,因为经常会存在开发阶段没有问题,打包 ...
- (模板)graham扫描法、andrew算法求凸包
凸包算法讲解:Click Here 题目链接:https://vjudge.net/problem/POJ-1113 题意:简化下题意即求凸包的周长+2×PI×r. 思路:用graham求凸包,模板是 ...
- 2.5远程仓的库使用-2.7Git别名
2.5 远程仓库的使用 查看远程仓库 git remote # -v 选项会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL 添加远程仓库 git remote add <sho ...
- JS数组去重的9种方法(包括去重NaN和复杂数组类型)
其实网上已经有很多js数组的去重方法,但是我看了很多篇并自己通过代码验证,发现都有一些缺陷,于是在研究多篇代码之后,自己总结了9种方法,如果有哪里不对请及时纠正我哈~ 转载请表明出处 测试代码 let ...
- 深入Python中的正则表达式
正则表达式应用的场景也非常多.常见的比如:搜索引擎的搜索.爬虫结果的匹配.文本数据的提取等等都会用到,所以掌握甚至精通正则表达式是一个硬性技能,非常必要. 正则表达式 正则表达式是一个特殊的字符序列, ...
- 模拟微信小程序页面Page方法
1.依赖 a.jQuery b.angularjs 2.page.js文件 1 var Page = function (options) { 2 var myApp = angular.module ...
- select的限制
/*一.select实现并发服务器并发的两点限制 1.一个进能够打开的最大文件描述符限制.可以通过两种方式修改 ulimit -n :获取最大文件描述符个数 ulimit -n 2048:修改为204 ...
- UNIX目录访问操作
1.目录访问相关函数: DIR* opendir (const char * path ); struct dirent* readdir(DIR *dirptr) ;参数是一个指向dirent 结构 ...
- SpringBoot微服务框架
springboot 是什么? 配置如何编写 yaml 自动装配原理 集成Web开发 集成数据库Druid 分布式开发:Dubbo(RPC)+zookeeper swagger:接口文档 任务调度 S ...