最近我们单位进行了一次搬家。单位的大家发现,自己在室内连接单位Wi-Fi时,手机里的各个软件只要需要用到定位服务的功能,无论是地图、打卡还是附近的人,都会发现自己定位在旧位置,从而导致各种各样的麻烦。
GPS虽好 但却不是万能的
搭载有定位服务的手机目前都会使用卫星定位的方式来确定设备当前的位置。有关GPS的定位原理,大家可以参考李永乐老师的这个视频来学习。
那么,如果手机找不到附近的基站和天上的卫星,但是又需要知道用户的位置,该怎么处理呢?总不能每次我们点外卖的时候都得从温暖的被窝/凉爽的空调房里出来,走到窗户边去接收GPS信号吧…… A-GPS系统应运而生。
A-GPS系统的实现方式有很多种,只要能辅助卫星系统进行定位的,都会被划做AGPS。让大家遇到这次问题的,便是Wi-Fi Location这一技术。
Wi-Fi Location来救场
如果你打开iPhone的定位服务,你能看到下面写了这么一行小字:
这段文字中,“众包无线局域网热点”便是本次出问题的罪魁祸首。
各个手机厂商都会有一个数据库,里面记录了很多Wi-Fi名称(SSID)和与这个Wi-Fi连接的设备信息,这些信息中就包括设备的经纬度。由此,手机在没有GPS信号的时候便可以根据这个数据库,找到这个Wi-Fi“路由器”最有可能的所在地,并将此位置作为设备的位置。因为Wi-Fi信号离开一段距离就会消失,因此这个精度可以满足找到你在哪栋楼,外卖给你送到哪里这一需求。通常你离开Wi-Fi信号的覆盖范围时,你的手机就应该已经能接受到GPS信号了。
由于这次搬家我们连着“路由器”一起搬走了。在各家手机厂商的数据库中,这个Wi-Fi一直是在旧位置的,因此各位的手机在收不到GPS信号,又没有其它方式能获取自己的位置时,只得查找自家数据库,翻看这个Wi-Fi名所绑定的地理位置在哪里。
那我们能做什么呢
由于这个数据库由各大手机厂商自行管理,因此我们只能尽可能多的将新的GPS信息提交给厂家,并祈祷他们能尽快更新数据库。
大家可以按照以下的方法,向自家手机品牌的数据库中提交数据:
- 到窗边或者靠近开阔位置但又能连接到Wi-Fi的地方
- 关闭Wi-Fi
- 通过基站和GPS定位,此时可以打开地图确认下自己的位置是否正确。
- 等待一两分钟后,打开并连接Wi-Fi,继续站在窗边(或开阔地)等待一两分钟,如果位置没有变化的话,说明已经成功提交了。
- 祈祷(?)
移动设备究竟是怎样仅仅使用 Wi-Fi 来定位的? - 刘晨骥的回答 - 知乎
知乎上的这篇文章提供了更多技术细节,各位大佬可以进行进一步的研究。