iOS开发-Core Location和Map Kit
一、Core Location确定物理位置
利用以下3种技术:
1、GPS(最精确的)
2、蜂窝基站ID定位(cell ID Location)
3、WPS(Wi-Fi Positioning Service,Wi-Fi定位服务)
这3种方法都很耗电,使用Core Location时要注意这一点,尽量只在必要时进行定位。使用时,我们可以根据需要指定精度。注意,在指定绝对最低精度级别时要谨慎,避免不必要的电力消耗。
Core Location所依赖的技术对于应用来说是隐藏的。我们不需要指定哪种技术,只需要指定精度级别,它就会自动从可用的技术中选择可以更好满足请求的那种。
二、如何使用Core Location API?
(一)创建位置管理器
使用到的主类是CLLocationManager
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
(二)设置精度
避免指定任何大于绝对需要的精度
精度通过设定CLLocationAccuracy的值进行指定,类型为双浮点型,单位为米(m)
示例:
// 设置委托
locationManager.delegate = self;
// 请求特定精度级别
locationManager.desireAccuracy = KLLocationAccuracyBest;
如果指定的desireAccuracy的值为10,就表示要求Core Location在尝试确定当前位置时尽量达到10米的精度。
其他指定精度的方法
KLLocationAccuracyBestForNavigation
KLLocationAccuracyNearestTenMeters
KLLocationAccuracyKilometer
KLLocationAccuracyThreeKilometer
(三)设置距离筛选器
默认情况下,位置管理器会把检测到的位置更改通知给委托。指定距离筛选器意味着告知位置管理器不要将每个更改都通知你,仅当位置更改超过特定大小时通知。
如设置1000米
locationManager.distanceFilter = 1000.;
如果希望位置管理器恢复为没有赛选器的默认设置
locationManager.distanceFilter = KCLDistanceFilterNone;
(四)获取使用定位服务的权限
(五)启动位置管理器
[locationManager startUpdatingLocation];
(六)合理使用位置管理器
如果只需要确定当前位置而不需要持续更新,那么获取完当前位置信息后应该让委托停止位置管理器。如果需要轮询,则需要确保在肯能的情况下停止轮询。
[locationManager stopUpdatingLocation];
(七)获取位置更新
使用locationManager:didUpdateLocations方法。该方法接受两个参数
1、调用改方法的位置管理器
2、一个CLLocation对象数组,用于描述设备的当前位置,可能还有之前的几个位置。无论何时,数据的最后一项都表示当前位置。
(八)使用CLLocation获取位置信息
该类有应用可能感兴趣的6个属性:
1、coordinate(地理坐标)—>(latitude)纬度和(longitude)纬度
2、horizontalAccuracy(水平精度)
3、altitude(海拔高度)
4、verticalAccuracy(垂直精度)
5、floor(地面)
6、timestamp(时间戳)
示例:
CLLocation latitude = theLocation.coordinate.latitude;
(九)错误通知
如果Core Location需要向应用程序报告错误,则调用locationManager:didFailWithError:的委托方法。
1、用户拒绝访问:调用并传递kCLErrorDenied错误代码。
2、无法确定位置:kCLErrorLocationUnknown
kCLErrorLocationUnknown错误表示是问题可能是临时的,而kCLErrorDenied或其他错误可能表示在当前会话的其余时间内,应用都将无法访问Core Location
3、网络相关错误:kCLErrorNetwork
iOS开发-Core Location和Map Kit的更多相关文章
- ios中Core Location跟Map Kit的基本使用
地图类开发应用中,离不开地理位置跟MKMapView的使用,下面就记录下自己在使用这两个东西中学到的. 不过并不是所有苹果的设备都支持地理位置,我们在使用前应该做个判断,代码如下: BOOL loca ...
- IOS开发——Core Graphics & Core Animation
好久没写过blog了.首先了解下近期苹果和IOS方面的最新消息. 1.WWDC2014在上个月举行了,与2013年一样.今年WWDC没公布硬件产品和新品(假设你懂cook你就会期待今年秋季公布会.估计 ...
- iOS开发 - Core Animation 核心动画
Core Animation Core Animation.中文翻译为核心动画,它是一组很强大的动画处理API,使用它能做出很炫丽的动画效果.并且往往是事半功倍. 也就是说,使用少量的代码就能够实现很 ...
- 精通iOS开发(第5版)
<精通iOS开发(第5版)> 基本信息 原书名:Beginning ios 6 development:exploring the ios sdk 作者: (美)David Mark ...
- Core Location Framework学习
在Apple开发中,尤其是移动设备开发,经常会使用Core Location Framework,这个框架可以使得iOS设备获取当前的地理位置.本文就具体到Core Location 框架中,查看其声 ...
- 《精通iOS开发》书籍目录
1.欢迎来到iOS和Swift世界 2.创建一个新项目 3.实现基本交互 4.更丰富的用户界面 5.自动旋转和自动调整大小 6.多视图应用 7.分页栏与选取器 8.表视图简介 9.导航控制器和表视图 ...
- iOS开发拓展篇—CoreLocation简单介绍
iOS开发拓展篇—CoreLocation简单介绍 一.简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如 (1)导航:去任意陌生的地方 (2)周边:找餐馆.找酒店.找银行.找电影院 ...
- ios开发——实用技术OC篇&地图与定位
地图与定位 11.1 iOS定位服务 11.2 iOS地图 11.3 Web地图 1 iOS定位服务 iOS中有三个定位服务组件: Wifi定位,通过查询一个Wifi路由器的地理位置的信息.比较省电, ...
- iOS开发---iPhone SDK 包含哪些东西?
第一部分: 在使用Intel芯片的Macintosh计算机开发iOS应用程序所需的全部接口.工具以及资源全都包含于iPhone SDK. 苹果公司将大部分系统接口发布在框架这种特殊的数据包.一个框架就 ...
随机推荐
- HDU 2444 The Accomodation of Students (偶图判定,匈牙利算法)
题意: 有一堆的学生关系,要将他们先分成两个组,同组的人都不互不认识,如果不能分2组,输出No.若能,则继续.在两组中挑两个认识的人(每组各1人)到一个双人房.输出需要多少个双人房? 思路: 先判定是 ...
- svn - 常用命令
基本流程: 获取新的代码,svn up(date),获取最新代码 锁住文件,防止你提交的时候,别人修改,造成冲突,svn lock filename 修改之后,svn add filename,将文件 ...
- OK - A byte of python - 读书笔记
看这本书的目的:再熟悉基本概念. 大部分都是知道,但是需要 明确 出来的 概念. - 欢迎吐槽错误,非常感谢. <A byte of python> - THIS 1. 组织行 - 形式: ...
- [转载]ios入门篇 -hello Word(1)
温馨提示:,如果您使用移动终端阅读本篇文章,请连接wifi的情况下阅读,里面有大量图片,以免造成您不必要的损失. 潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评 ...
- Darwin Streaming Server 6.0.3安装、订制、插件或模块
How to setup Darwin Streaming Server 6.0.3 on 32 or 64 bit Linux platforms, add custom functionality ...
- Andorid-如何为你的Android应用缩放图片
很难为你的应用程序得到正确的图像缩放吗?是你的图片过大,造成内存问题?还是图片不正确缩放造成不良用户体验的结果?为了寻求一个好的解决方案,我们咨询了Andreas Agvard(索尼爱立信软件部门), ...
- MBR与GRUB简介
在坛子里找到一篇关于grub和mbr工作原理的文章,以前一直都是一头雾水,今天转这文章学习下..哈.. 能正常工作的grub应该包 括一下文件:stage1.stage2.*stage1_5.menu ...
- asp.net MVC 应用程序的生命周期(下)
看看上面的UrlRoutingModule源码里面是怎么实现Init方法的,Init()方法里面我标注红色的地方: application.PostResolveRequestCache += new ...
- HTTP协议中的长连接和短连接(keep-alive状态)
什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待在同 ...
- Text Kit入门
更详细的内容可以参考官方文档 <Text Programming Guide for iOS>. “Text Kit指的是UIKit框架中用于提供高质量排版服务的一些类和协议,它让程序能够 ...