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 ...
随机推荐
- python给图片打马赛克
图片马赛克 关注公众号"轻松学编程"了解更多. 导包 import numpy as np import matplotlib.pyplot as plt %matplotlib ...
- PageHelper使用步骤
一.导入jar包(maven构建导入坐标) <dependency> <groupId>com.github.pagehelper</groupId> <ar ...
- Codeforces 1404 D. Game of Pairs
Codeforces 1404 D.Game of Pairs 给定\(2n\)个数\(1,2,...,2n\),A 和 B 将进行交互,规则如下: A 需要将元素分成 n 组 \(\mathbf{p ...
- .NET Core 跨平台资源监控库及 dotnet tool 小工具
目录 简介 dotnet tool 体验 CZGL.SystemInfo SystemPlatformInfo ProcessInfo 内存监控 NetworkInfo DiskInfo 简介 CZG ...
- Thinkphp3.2 cms之角色开发
一.角色管理开发 <?php namespace Admin\Controller; use Think\Controller; class SystemController extends C ...
- c#分割习题
2.从一个记录了学生成绩的文本文档,每个学生成绩是一行,每行是用 | 分割的数据,用 | 分割的域分别是姓名.年龄.成绩.年级,写程序取出各个年级成绩最高学生的成绩.年级放到集合中.提示:(1)使用 ...
- orphan sockets
orphan sockets 介绍一下什么是 orphan sockets,简单来说就是该 socket 不与任何一个文件描述符相关联.例如,当应用调用 close() 关闭一个链接时,此时该 soc ...
- 《.NET 5.0 背锅案》第6集-案发现场回顾:故障情况下 Kubernetes 的部署表现
第1集:验证 .NET 5.0 正式版 docker 镜像问题 第2集:码中的小窟窿,背后的大坑,发现重要嫌犯 EnyimMemcachedCore 第3集-剧情反转:EnyimMemcachedCo ...
- WIN10下安装python3.7.2出现“尝试创建C:\Users\XX\AppData\Roaming\Microsoft\Installer时出错”
WIN10下安装python3.7.2出现"尝试创建C:\Users\XX\AppData\Roaming\Microsoft\Installer时出错" 1.右键点击安装包以管理 ...
- Linux 升级内核开启 TCP BBR 有多大好处
前言 如果你有订阅一些科技新闻,应该会有看过内核在4.9当中加入了一个新的算法,来解决在有一定的丢包率的情况下的带宽稳定的问题,这个是谷歌为我们带来的干货,新的 TCP 拥塞控制算法 BBR (Bot ...