iOS定位服务的缺陷

前两日发现iOS(11.3.0)在特殊场景下存在定位不准确的Bug。

原由是我司搬家,更换新的办公地点。但新的办公地点定位仍是旧地址。此情况多数员工遇到。

这种情况下首先想到的是系统基于wifi定位的缓存没有及时更新。因此我关闭wifi,尝试使用4G网络,但仍然定位在旧地址。这就很奇怪了。

最终,我在无wifi的情况下,进入“设置—隐私—定位”,关闭定位,再重新开启定位,终于定位准确了。(在苹果官方介绍中,说明了关闭定位服务后,会清除wifi定位缓存。链接:Apple Q&A on Location Data

后来查了一些资料,了解了iOS的定位机制。

iOS主要采用3种不同定位方式:

GPS定位

原理:GPS全球定位系统,由覆盖在全球的24颗卫星不间断地发送自身星历参数和时间信息,用户接收到这些信息后,经过计算求出接收机地三维位置、三维方向以及运动速度和时间信息。进而实现精准定位。

优点:(1)精度最高;(2)支持精准的动态定位;(3)全球覆盖,覆盖范围最广

缺点:(1)由于国家利益关系,政府通常会降低民用GPS精度;(2)GPS定位需要能够收到卫星信号,更适合室外使用;(3)速度慢;(4)手机耗电大

基站定位

原理:简单描述即是利用基站对手机距离的测算来确定手机位置的。

优点:(1)覆盖较广;(2)定位位速度最快;(3)手机耗电最少

缺点:精度较差,因为每个基站辐射范围广,可能误差>500m

wifi定位

原理:终端获得wifi热点的Mac地址(而且只需要发现有此wifi即可,并不需要连接上),然后通过云端服务器查询此wifi热点的坐标。

那么wifi的位置坐标是怎么来的呢?这里需要提到Skyhook公司,具其官方说法是开着车在大街上采集wifi热点信号,并用GPS定位。觉得这种方法挺傻的,为什么不根据用户由GPS切换至wifi时的GPS定位信息和时间差来测算出对应wifi的坐标位置呢?

优点:(1)精准度较高,误差大概几十米范围内;(2)定位较快

缺点:覆盖范围小,需要不断增加新的wifi热点与对应定位信息,才能扩大其覆盖范围;

iOS定位策略的问题与可能的解决办法

根据iOS所采用的3种定位方式,再结合我所遇到的问题,可以推断:

1、室内场景下,iOS会第1优先采用wifi定位;

2、iOS在每次获取wifi定位时,可能不会同时获取基站定位信息与GPS定位信息,因此wifi位置变更后,iOS无法立即进行校准更新。

对于我所描述的问题场景,或许以下办法可以解决这个缺陷:

1、由GPS定位或基站定位,切换至wifi定位后,应判断不同定位方式的经纬度,并计算经纬度的距离;

2、如果用户进入某一wifi热点后,由GPS或基站定位切换至wifi定位,不同定位方式的经纬度距离大于x值,则应该继续使用基站定位,而非wifi定位,优先保证用户定位的准确性。同时,对此wifi热点标记1次异常;

3、当某个wifi热点异常标记达到一定比例,则应该对此wifi热点的定位数据进行校准更新。

这个策略的可以保证用户定位的准确性,并能够及时完成wifi错误定位的校准更新。但也有缺点,此策略需要更多的计算;并且在不同定位方式切换过程中,需要同时获取不同定位方式的位置信息进行记录上传,会增加耗电。


相关资料:

Apple Q&A on Location Data

知乎:Wi-Fi 定位的原理是什么?

CSDN:基于WiFi的室内定位

CSDN:iOS中三种定位方式

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证

发表评论

电子邮件地址不会被公开。 必填项已用*标注