Core Location 简述

简介: Core Location可以利用三种技术来实现:GPS、蜂窝基站三角网定位(cell tower triangulation)和Wi-Fi定位服务(WPS),其中GPS是最精确的。

Core Location可以利用三种技术来实现:GPS、蜂窝基站三角网定位(cell tower triangulation)和Wi-Fi定位服务(WPS),其中GPS是最精确的。

我们只用告诉Core Location我们想要的精度级别,它将从它可用的技术中决定哪种可以更好地满足你的需求。

为了与Core Location打交道,需要创建一个位置管理器实例,如下所示:

CLLocationManager *locationManager = [[CLLocationManageralloc]init];

这将创建一个实例,但它并没有马上开始工作。

设置委托和请求指定精度级别:

locationManager.desiredAccuracy =kCLLocationAccuracyBest;

这将指定最高精度级别,其他值还有:kCLLocationAccuracyNearestTenMeters、kCLLocationAccuracyHundredMeters、kCLLocationAccuracyKilometer和kCLLocationAccuracyThreeKilometers。

设置距离筛选器:

locationManager.distanceFilter  = 1000.0f;

将告知位置管理器直到iPhone已经从以前报告的位置移动至少1000米之后才通知其委托,重置使用kCLDistanceFilterNone。

启动位置管理器:

[locationManager startUpdatingLocation];

停止位置管理器:

[locationManager stopUpdatingLocation];

使用CLLocation获取纬度和经度:

CLLocationDegrees*latitude = theLocation.coordinate.latitude;

CLLocationDegrees *longitude = theLocation.coordinate.longitude;

另外,horizontalAccuracy属性描述以coordinate作为其中心的一个圆的半径。此值越大,位置就越不准确。

altitude属性能告诉你你在海平面以上还是以下多少米。

verticalAccuracy表示Core Location在其精确的海拔方面的准确程度。

CLLocation还有一个非常实用的方法,通过大圆计算获得两个CLLocation对象之间的距离:

CLLocationDistancedistance = [fromLocation distanceFromLocation:toLocation];

CLLocationManagerDelegate有两个委托方法,当更新位置的时候,将调用locationManager:didUpdateTolocation:fromLocation:方法。

当遇到错误的时候,调用locationManager:didFailWithError:方法。错误代码有kCLErrorDenied和kCLErrorLocationUnknow两种。前者通常表示访问拒绝(可能是由用户拒绝),并且应用程序之后都将无法访问Core Location。后者的错误一般可能是临时的。

目录
相关文章
|
移动开发 JavaScript 安全
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
529 0
|
9月前
|
敏捷开发 数据可视化 搜索推荐
设计团队协作办公软件评测:哪 6 款最值得设计师选用?
在软件设计开发领域,高效的团队协作至关重要。本文推荐6款可视化团队协作软件,旨在帮助偏好计划与秩序的J人群体提升协作效率。包括国内的板栗看板及国外的Trello、Asana、Jira、Monday.com和Basecamp,它们各具特色,如板栗看板的简洁直观、Trello的高度可定制化、Asana的智能任务管理、Jira的专业开发支持、Monday.com的多样化视图和Basecamp的简洁高效,均能有效支持不同规模和需求的团队,优化工作流程,确保项目顺利推进。
166 6
|
10月前
|
消息中间件 监控 负载均衡
在Kafka中,如何进行主题的分区和复制?
在Kafka中,如何进行主题的分区和复制?
|
分布式计算 Hadoop
hadoop格式化HDFS问题
【7月更文挑战第15天】
324 12
|
设计模式 开发框架 前端开发
在DevExpress中使用BandedGridView表格实现多行表头的处理
在DevExpress中使用BandedGridView表格实现多行表头的处理
|
编解码 计算机视觉
工业相机识别电路板元器件:彩色与黑白的区别
工业相机识别电路板元器件:彩色与黑白的区别
291 0
|
数据采集 SQL 数据挖掘
2024最新版Python安装教程,适合新手,赶快收藏!_python3最新版2024(1)
2024最新版Python安装教程,适合新手,赶快收藏!_python3最新版2024(1)
|
弹性计算 运维 监控
ECS省钱指南,万字长文教你如何选择与业务形态最匹配的付费方式
阿里云弹性计算团队十三位产品专家和技术专家共同分享云上运维深度实践,详细阐述如何利用CloudOps工具实现运维提效、弹性降本。
131805 37
|
JavaScript 前端开发
vue3中导航守卫
vue3中导航守卫
158 0