疯狂ios讲义之使用CoreLocation定位(1)

9.1 iOS的定位支持

iOS设备支持的定位方式有多种最早期的iPhone只支持通过运营商的基站信号进行定位后来iOS系统开始引入WiFi支持从而允许iOS设备通过周围的WiFi信号进行定位。

iPhone 3g开始iPhone手机提供了内置的GPS模块处理芯片从而允许通过GPS卫星系统进行定位。从iPhone 4开始iPhone手机更换了精确度更高、耗电量更少、灵敏度更高的芯片因此可以使用GPS进行精确定位。

下面先简单介绍iOS定位支持的3种模式。

9.1.1 GPS卫星定位

GPS是英文Global Positioning System全球定位系统的简称GPS20世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统。从这个介绍不难发现GPS的作用就是为全球的物体提供定位功能。

GPS定位系统由3部分组成即由GPS卫星组成的空间部分、若干地面站组成的控制部分和普通用户手中的接收机这3个部分。对于手机用户来说手机就是GPS定位系统的接收机也就是说GPS定位需要手机的硬件支持GPS功能。

GPS定位需要能收到卫星信号才行卫星信号可能会被建筑物比如高楼遮挡因此一般需要在室外进行接收、定位。虽然iPhone 4采用了高灵敏度的GPS芯片但仍然需要在窗户旁或者户外才能进行接收、定位因为只有这些地方才能确保卫星信号的强度和稳定性。

与基站定位、WiFi定位相比GPS定位耗电量最大速度最慢但是精度最高。

需要说明的是iOSGPS定位与单纯的GPS定位不同它是一种所谓辅助GPS简称A-GPSA-GPS首先通过基站定位或WiFi定位获得该设备的大概位置然后通过将设备的大致位置发到远程服务器由服务器负责进行查询和计算从而获取当前位置的卫星信息并通过网络将这些卫星信息反馈给iOS设备这样就避免了iOS设备直接通过GPS扫描、分析天上的卫星信息如哪些卫星可见、具体在什么位置、时钟是多少等。因此通常来说A-GPS比单纯的GPS更快。当然这只是一般而论对于专业级的GPS定位设备其GPS芯片的灵敏度可能更好因此这种GPS定位设备肯定更快。

A-GPS的优点是定位快缺点是需要网络但也只是在初次定位时需要网络一旦卫星信息返回在一段时间和范围内这些卫星信息无须改变接下来的GPS定位就无须联网直接使用已有的卫星参数即可。

iOS设备上iOS系统会综合使用上述定位方式。一般来说iOS系统可能先按照最快的“无网基站定位”返回一个位置当有网络连接时再使用“有网基站定位”来更新位置然后利用A-GPS查询卫星星图最后在能收到GPS信号的情况下转为使用GPS定位。

根据当前卫星信号情况和网络环境iOS系统可能在上述方式之间反复迭代不一定按照特定步骤或方式而且随着iOS系统升级定位顺序和规则可能改变。

9.1.2基站定位

每个手机基站都有一个标识符iOS设备可以搜集周围所有收到信号的基站和它们的标识符通过联网发送到苹果云端服务器再由服务器根据这些基站的位置信息查询并计算出当前位置然后把该定位信息返回给手机。因为基站信号的辐射范围大所以相对来说误差是比较大的通常在500米到几公里范围内。

基于基站定位的方式具有速度快耗电量比较少但误差较大的特征。

在没有网络的情况下iOS 4对其进行了优化可以在没有网络连接时采用无网定位因为Apple已经预先将一些重要基站几十公里选一个提前存储在iOS系统中因此即使不联网iOS系统也可通过这些本地基站信息定位到设备的位置。这种定位方式的误差更大通常在10公里到50公里范围内。

无网基站定位的前提是iOS设备能接收到内置在手机中的那些“重要基站”的信号不一定是你的手机所属运营商只要能收到信号就可以了所以室内、室外一样都可以进行基站定位。

9.1.3WiFi定位

WiFi定位和基站定位的原理大致相似iOS设备通过无线网卡搜集周围所有的WiFi热点获得它们的MAC地址然后通过Apple的云端服务器查询该WiFi热点是否已经登记如果已经登记即可获取该WiFi热点的位置最后通过对多个WiFi热点折中计算得到当前位置并返回给iOS设备。

只要能收到手机信号的地方都可通过WiFi定位室内、室外的效果相同。

WiFi定位速度、耗电量和精度都介于基站和GPS之间精度大概在几十米范围内。

传统的WiFi定位是需要网络的但是iOS系统对其进行了优化可以实现无网WiFi定位。无网WiFi定位的原理是iOS设备在联网状态下会大致定位出设备的位置并自动将设备所在地周围所有的WiFi热点信息保存在手机系统中。在接下来的时间内即使当前iOS设备没有联网iOS系统也可以利用之前保存的本地的WiFi热点信息定位出设备的位置。

根据无网WiFi定位的原理不难看出无网WiFi定位的前提是该iOS设备之前在该区域附近曾经接入过网络如果初次到一个陌生的地方无网WiFi是无法定位的。

iOS系统在进行定位时已将底层具体的定位细节进行了屏蔽——也就是说这些定位细节对开发者而言是透明的iOS系统会智能地根据设备的情况和周围的环境采用一套最佳的解决方案。例如能够接收GPS信号那么优先使用GPS定位否则采用WiFi或基站定位在WiFi和基站之间优先使用WiFi如果无法连接WiFi才使用基站定位。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章