1、定位设置

2、定位页面逻辑

1、定位设置

2、定位页面逻辑

1)、第一次进入该VC,在 viewDidLoad 调用刷新页面 refreshLocationView 。这时用户还没决定,会刷出“正常”的view

- (void)refreshLocationView{// 定位服务正常 && 定位被用户拒绝if([CLLocationManager locationServicesEnabled] &&[CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied ) {// "提示用户开启定位"viewif (self.用户拒绝view == nil) {[self.view addSubview:self.deniedView];}}else{// "用户的正常定位"Viewif (self.用户拒绝view) {[self.用户拒绝view removeFromSuperview];}// 开始定位( 高德 的 startUpdatingLocation )[self 是否创建管理者,并开始定位];// 按需显示hud[self showHud]}
}

  

思路:1、需要判断 “用户拒绝view”的存在,减少创建、删除等重复操作。

   2、 “用户拒绝view”需要覆盖在“正常显示view”的上面(最后被addSubview)

2)、弹出定位警告窗给用户选

  2-1)、如果用户选允许,那么没问题。

  2-2)、如果用户选不允许,再回调里,再刷新上面的方法,从而刷出“用户拒绝View”,并添加到最上面

    注意:如当前“正常view”显示Hud,在等待用户同意。然后用户拒绝,这个时候,需要隐藏Hud,并刷出“用户拒绝View”。

       而,隐藏hud,不能写在回调外面,因为刚切换过来,定位状态会更新,所以需要在当前状态是拒绝里,隐藏Hud。

//amap 是 高德 的方法
//- (void)amapLocationManager:(AMapLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{if (status == kCLAuthorizationStatusDenied) {// 如有Hud,可隐藏Hud[self hideHud];[self refreshLocationView];}
}

3)、“用户拒绝View”设置按钮,跳转到隐私设置。

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]) {[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]options:@{}completionHandler:nil];
}

4)、从隐私设置里跳转回来,不会调用 viewWillAppear: 系列方法,所以需要加通知,再刷新view

[[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(refreshLocationView)name:UIApplicationWillEnterForegroundNotificationobject:nil];

5)、最后dealloc移除通知

- (void)dealloc
{[[NSNotificationCenter defaultCenter] removeObserver:self];
}

6)、可选,隐藏Hud。

  6-1)、如果只要经纬度,得到经纬度回调里,隐藏Hud。

// 高德 的 定位成功回调
- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location reGeocode:(AMapLocationReGeocode *)reGeocode
{// 停止定位(高德 的 stopUpdatingLocation)// 看需请求搜索附近建筑 (高德 的 AMapPOIAroundSearch: )}

  6-2)、如要附近建筑,在得到经纬度的回调里,再请求附近数据 AMapPOIAroundSearchRequest 。

      请求成功后,得到附近建筑回调,再隐藏Hud

// 高德 的 搜索成功回调
- (void)onPOISearchDone:(AMapPOISearchBaseRequest *)request response:(AMapPOISearchResponse *)response
{[self hideHud];
}

  

  

转载于:https://www.cnblogs.com/leonlincq/p/8534412.html

iOS:位置相关(18-03-09更)相关推荐

  1. 疯狂iOS 讲义(上) Objective-C 2.0与iPhone/iPad应用开发基础(国内首部iOS 7相关著作,小伙伴们,学好iPhone/iPad应用开发,我们一起做土豪吧)

    疯狂iOS 讲义(上) Objective-C 2.0与iPhone/iPad应用开发基础(国内首部iOS 7相关著作,小伙伴们,学好iPhone/iPad应用开发,我们一起做土豪吧) 李刚 编 IS ...

  2. 2022 CCF 非专业级别软件能力认证第一轮 (CSP-J1)入门级 C++语言试题 认证时间:2022 年 9 月 18 日 09:30~11:30

    今天的考试题,有点乱 2022 CCF 非专业级别软件能力认证第一轮 (CSP-J1)入门级 C++语言试题 认证时间:2022 年 9 月 18 日 09:30~11:30 考生注意事项:  试题 ...

  3. IOS 地图相关知识点

    天渊不微博 iOS 6.1正式版可能在下周发布 据idownloadblog网站报道,可靠消息人士称iOS 6.1的第五个测试版,也就是GM版将很快发布.消息称目前iOS 6.1 GM正在内部测试之中 ...

  4. android与ios系统优缺点,安卓系统与苹果iOS系统的差别,谁更好用?为什么系统会卡顿?...

    在现在的智能手机圈,主要有两类操纵系统,一类是谷歌的安卓系统,目前最新的版本为Android P系统,该系统为开源系统,简单讲就是业态共享,比如谷歌手机的原生系统.华为的EMUI定制系统.小米的MIU ...

  5. C语言文件读写(5)-文件位置相关

    C语言文件读写(5)-文件位置相关 当打开一个文件以后,无论是读还是写,都有一个指示文件位置的这么一个东西,我们可以称之为文件的位置指示器或者文件位置指针,文件位置指示器指明了当前文件读或者写的位置信 ...

  6. QT基础之位置相关的函数介绍

    文章目录 代码链接 简介 Demo实例 更多参见 QT基础与实例应用目录 代码链接 GitHub链接 :CoordinateExample 简介 Qt中有很多与位置相关的函数或者位置函数,主要用于获取 ...

  7. http://www.blogjava.net/beansoft/archive/2007/03/09/102812.html

    http://www.blogjava.net/beansoft/archive/2007/03/09/102812.html

  8. E.03.09 China Tried to Slow Divorces by Making Couples Wait. Instead, They Rushed.

    2021.03.09 文章目录 [课程导读] [英文原文] [外刊原文] [课程导读] 2021年1月1日起,中国开始实施<民法典>.其中有关"离婚冷静期"的规定引发了 ...

  9. iOS Hook相关教程 工具篇

    iOS hook相关教程 工具篇 osx 工具集 class-dump 建议安装 class-dump,顾名思义,就是用来dump目标对象的class信息的工具.该工具利用Objective-C语言的 ...

  10. offsetParent、getBoundingClientRect与其他位置相关属性

    offsetParent.getBoundingClientRect与其他位置相关属性 写在前面:本文章中的代码演示,默认清除的了 body 和 html 的 margin.padding. 定位父级 ...

最新文章

  1. 使用tab键分割的文章能快速转换成表格。( )_word排版技巧:活用Enter键提高工作效率...
  2. 《研磨设计模式》chap23 职责链模式chainOfResponsibility(2)应用场景
  3. 二进制查找替换常用函数
  4. 区别于传统低效标注,两种基于自然语言解释的数据增强方法
  5. Touch Driver介绍
  6. 漂亮的不太像手机!三星Galaxy S11最新渲染图曝光
  7. jsoup爬虫工具超简单使用(记录)
  8. android中openMax的实现
  9. 【系列二之图像处理系列】波形处理(3)
  10. 深度总结:软件设计七大原则
  11. 网易邮箱大师如何添加Word附件 添加附件方法步骤详细介绍
  12. 《嵌入式 – GD32开发实战指南》第13章 DAC
  13. 图形点选中的算法应用-点线距离计算
  14. 鼠标左右键的快捷键是什么?
  15. Matlab基于主分量的人脸重建显示
  16. android抽屉式listview,Android 抽屉效果的导航菜单实现
  17. Deepin 系统没有 Times New Roman 等微软字体
  18. Ps编程脚本开发零基础学脚本(一)
  19. win环境20分钟搭建php+sql服务器Apache+php+mysql在windows下的安装与
  20. Win7 SMTP 服务器代替工具

热门文章

  1. 上交大本科毕业,获ICRA最佳学生论文、机器人控制双奖项
  2. LQR轨迹跟踪算法Python/Matlab算法实现_代码(2)
  3. 扫码枪输入mysql_使用jQuery监听扫码枪输入并禁止手动输入的实现方法
  4. java压栈重复字符串_Java 实例 – 压栈出栈的方法实现字符串反转
  5. 地区的json数据_数据密集型系统基础:数据模型与查询语言
  6. JVM 内存监控 (1.8)
  7. mysql罏在十三_MySQL高级知识(十三)——表锁
  8. python参数估计置信区间_python中分布参数的置信区间估计
  9. 教育部计算机考研大纲,2018考研大纲从哪里看?
  10. Windows 10正式版21H2更新:之后功能性更新将减为年更