iPhone Locate 定位技术
iPhone Locate 定位技术
其实使用iphone的定位系统开发软件是很简单的一件事,下面我们就来认识一下iphone的定位系统的使用。
1.Getting the User’s Current Location
获取用户当前位置。
获取位置的方式有三种:GPS, cell tower triangulation(蜂窝站点), 和
Wi-Fi Positioning Service (WPS).其中GPS是最精确的定位方式,但是在第一代iphone上没有。GPS是通过读取很多卫星微波信号来确定当前位置的。蜂窝站点通过 iphone周围的站点计算出来的,在蜂窝站点密集的地方使用这种技术可以达到一个准确的值,比如在城市但在蜂窝站点不密集的地方效果就没那么好了。最后一个WPS使用的是连接到Wi-Fi网络的IP地址来确定位置,这将会有较大的误差。这三种方式都会消耗大量的电。怎么才能即实现定位功能又省电呢?下面的方法就可以解决:当使用Core Location时,可以选择精确度,谨慎的选择你所需要的准确度,可以帮助你省很多电。Core Location使用的技术隐藏在应用程序中。我们无需选择使用GPS、蜂窝站点技术还是WPS,我们只要告诉它我们需要的准确度它会自己决定选什么技术来满足我们的需求。
2.The Location Manager
Core Location的接口是很容易使用的。主要用到的类是CLLocationManager,就是通常说的Location Manager。为了使用Core Location我们需要创建Location Manager的实体:
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
这样我们就创建了 Location Manager的实体,但是我们还没有开始定位。我们需要指派一个代理给Location Manager。当定位信息改变时Location Manager将调用代理方法。定位的过程会花一段时间平均几秒钟。代理方法必须遵循CLLocationManagerDelegate协议。
3.Setting the Desired Accuracy
设置代理后,你还要设置需要的准确度。就像我们刚刚说的精确度越高越耗电。如果你只是要是应用程序确定是哪个国家或是哪个州那么就不要设置很高的精确度。记住一点有时候你并不能得到你需要的精确度。
下面说一个设置代理和设置精确度的例子:
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
精确度使用的是一个double类型的常量。单位是米,所以如果你设置desiredAccuracy=10那么精确度就是10米,这就告诉 Location Manager尽可能达到10米的精确度。还可以设置为其他常量:kCLLocationAccuracyBest,
you can also use kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracy
HundredMeters, kCLLocationAccuracyKilometer, and kCLLocationAccuracyThree
Kilometers.
4.Setting the Distance Filter
默认情况是这样的,每当位置改变时Location Manager就调用一次代理。通过设置distance filter可以实现当位置改变超出一定范围时Location Manager才调用相应的代理方法。这样可以达到省电的目的。
例如:locationManager.distanceFilter = 1000.0f;
如果设置默认值:
locationManager.distanceFilter = kCLDistanceFilterNone;
5.Starting the Location Manager
开始定位
当你转备好为定位消耗电池时我们可以调用
[locationManager startUpdatingLocation];
来告诉 Location Manager开始定位
6.Using the Location Manager Wisely
如果你只需要确定当前位置而不需要进一步定位,当Location Manager查询到当前位置时需要通知代理停止定位。
停止方法: [locationManager stopUpdatingLocation];
7.The Location Manager Delegate
Location Manager必须遵守CLLocationManagerDelegate协议,CLLocationManagerDelegate协议定义了两个方法,并且这两个方法都是可选的。其中一个方法是当确定当前位置或是位置信息改变时调用。另一个方法是当遇到错误信息时调用
8.Getting Location Updates
当Location Manager想通知它的代理当前位置时,它会调用
locationManager:didUpdateToLocation:fromLocation: 方法。
这个方法有3个参数第一个参数Location Manager。第二个参数是一个CLLocation对象用来确定当前位置,第三个是CLLocation 对象用来确定最近一次更新是的位置。该方法调用时,先前的location对象会被置空。
6.Getting Latitude and Longitude Using CLLocation
经纬度
位置信息是通过使用CLLocation类的实例从Location Manager那里得到的。这个类有5各属性。latitude和longitude被封装在coordinate属性中。
获取方式如下:
CLLocationDegrees latitude = theLocation.coordinate.latitude;
CLLocationDegrees longitude = theLocation.coordinate.longitude;
CLLocation对象还可以告诉你精确度。
horizontalAccuracy属性描述调整的中心点。horizontalAccuracy值越大越不精确。
CLLocation 还有一个叫altitude的属性用来表示海拔
CLLocationDistance altitude = theLocation.altitude;
每一个CLLocation对象都有一个叫verticalAccuracy的属性来判断精确度。海拔数值可能会有verticalAccuracy大小的误差,当verticalAccuracy为负值时,那是Core Location在通知你不能获取海拔高度。
CLLocation的另一个属性timestamp用来告诉Location Manager是什么时候定位的。CLLocation还有一个实例方法来告诉你的两个CLLocation对象之间的距离。这个方法叫:getDistanceFrom:
它是这样工作的:
CLLocationDistance distance = [fromLocation getDistanceFrom:toLocation];
返回两个时间段内的距离,有时候它是不考虑海拔的,所以要自己计算距离。
7.Error Notifications
如果Core Location不能指定你当前的位置,它将调用。CLLocation的第二个代理方法:locationManager:didFailWithError:,最常见的是用户取消使用定位信息。
iPhone Locate 定位技术相关推荐
- 苹果uwb_苹果2020年将发布3款基于UWB高精度定位技术的新iPhone
苹果2020年将发布3款基于UWB高精度定位技术的新iPhone 日前,据国外媒体报道,苹果2020年将发布3款基于UWB高精度定位技术的新iPhone,以及推出与之匹配的定位标签配件.众所周知,UW ...
- 老司机揭秘手机定位技术,实在是精彩!
本文来源于鲜枣课程 今天我们所处的移动互联网时代,手机成了每个人的生活标配. 这些手机里,安装了形形色色的APP,提供了各种服务,彻底改变了我们的生活. 这些服务里面,就包括我们今天的主角--定位. ...
- 自主移动机器人常用的导航定位技术及原理
原文章:http://blog.csdn.net/dxuehui/article/details/53872895 随着经济的发展和科技的进步,智能机器人早就不是什么新鲜事物.而室内服务机器人作为新兴 ...
- 物联全域定位技术漫谈
1 什么是定位? 说到定位,相信大部分人都听说过 GPS,也就是 Global Positioning System,大家平时用各种地图 APP 导航都会用到.而 GPS 是美国主导的卫星导航系统,除 ...
- 移动定位技术简述(转)
2.1 Cell-ID Cell-id技术都是从网络中提取手机用户Cell-id,以作为手机当前位置信息的方式. SoLSA(Support of Localized Service Area)是Ce ...
- UWB测试是什么,UWB技术是什么?UWB超宽带技术测试,UWB室内定位技术是什么?
一.什么是UWB技术?UWB技术详解 超宽带(Ultra Wide Band,UWB)技术是一种无线载波通信技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽. ...
- 定位技术课程设计-微信小程序校园导游系统
定位技术课程设计课程设计教学目的课程设计要求课程设计题目原题目拓展内容需求分析原理分析微信小程序API定位原理WIFI指纹定位原理路径规划算法调研详细设计总述主页面介绍学校简介页面介绍导引页面概述导引 ...
- 细数移动机器人的5种定位技术!
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 随着传感技术.智能技术和计算技术等的不断提高,智能移动机器人一定能 ...
- 详述机器人的5种定位技术
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 随着传感技术.智能技术和计算技术等的不断提高,智能移动机器人一定能 ...
最新文章
- Linux下常用的命令
- windows下手把手教你捕获数据包
- 双重差分模型能做固定效应吗_数据分析之道 | 双重差分法(DID)
- Flutter游戏:启动时的欢迎页
- mysql执行计划中 性能最好_MySQL性能优化-explain执行计划
- 《JS高级程序设计》之三
- CentOS 7.6网络配置
- efi文件错误服务器崩溃,电脑故障分析:Winload.efi文件丢失导致蓝屏的解决方法...
- 关于奈奎斯特图的一些解读
- 输出101到200的素数python_python 判断101-200之间有多少个素数,并输出所有素数。...
- BCB 第三方组件/控件 ZZ
- php的implode函数的作用是,PHP函数implode介绍
- 1-2 经济学发展史、实证/规范经济学
- vijos 1282128312841285 佳佳的魔法照片/魔法药水/魔杖/魔法阵
- 计算机网络教程实验二——静态路由配置实验心得
- error C3646: 未知重写说明符
- 面向对象(继承,多态,单态,魔术方法)
- MATLAB Mann-Kendall突变检验 (mk突变检验)
- Jmeter安装配置详细教程
- javaweb-jsp(上)
热门文章
- 报告警告SAFT可能增加代币销售的法律风险
- 新年伊始“烦躁和迷茫”是我们的心情状态吗
- python在软件测试中的应用_探索Python在数据库测试中的应用
- vue method ajax上传文件,前端上传文件追根溯源_和_antd_vue上传文件实例
- 分享115个HTML电子商务模板,总有一款适合您
- Java使用easyExcel操作Excel就是这么简单!
- html css3风车,【干货!】如何利用CSS3新属性创建一个风车动画
- qemu 虚拟机和宿主机之间传输文件
- 做软件测试你选择国企还是互联网大厂,哪个更香?
- HTML用乘法函数,excel乘法函数-这两个乘积函数技巧,办公时特别实用,但擅长的人不多...