现象描述
利旧AP移至新位置后手机和笔记本电脑等设备在连接到 Wi-Fi 时无法获取正确的位置。在这种情况下,仍然可以通过蜂窝网络获取正确的位置。位置准确性并非是基于 GPS 或使用 Wi-Fi 时路由器的公共 IP。
问题原因
通常,设备上的内置定位服务将使用 GPS、Wi-Fi(有些可能使用蓝牙)或手机信号塔来确定设备的大致位置。当在野外或路上时,附近几乎没有接入点/手机信号塔,只要设备在某些卫星的信号覆盖范围内,它就可以使用 GPS 获取其位置。当连接WiFi时,设备会使用 WiFi 定位技术来确定其位置,这比 GPS 更快、更省电。该技术使用现有的基础设施和 WiFi 接入点 (AP) 来计算设备所在的位置。但是,设备本身需要打开 WiFi 来监听附近的接入点,以了解其位置。
这里我们举个例子来让它更容易理解。当连接Wi-Fi 网络,并且 GPS 信号完整。在这种情况下,GPS 会确定所在位置以及附近 WiFi 网络的 BSSID(WLAN MAC 地址)。此类信息将发送到位置服务提供商的数据库,包括 Skyhook、Google、Apple、Microsoft 等。下次外面下暴风雨且 GPS 无法工作时,设备仍可以在开启 WiFi 的情况下获取其位置,因为数据库中有一个位置映射了AP的 BSSID。这也解释了为什么利旧AP会使设备可能会获取错误的位置。这是因为AP的 BSSID 位置仍然映射的是以前的位置,而不是当前的位置。换句话说,这是位置数据库中错误的映射记录。
解决办法
这里提供了三种可能的解决方案作为参考。如果你有更好的意见,也可以在这里分享。
1、由于此问题是由位置数据库中路由器的 BSSID 位置映射错误引起的,最快的解决方案是更新映射规则。但是,位置服务提供商似乎没有像预期的那样频繁更新其位置数据库。因此,唯一的解决方案可能是等到AP的位置自动更新(可能需要数周或数月)。根据Google 的官方声明,当设备连接到 Wi-Fi 网络时,可以保持 GPS 开启(确保所在位置有 GPS 信号),这可能会加快更新过程。
提示:如果是Android手机,建议进入手机的“设置”,找到并打开Wi-Fi扫描和蓝牙扫描,这也有助于提高定位精度。
2、如果您的设备具有由 Skyhook(三星、摩托罗拉等)提供支持的内置定位服务,您可以通过以下链接手动更新AP的位置。
https://www.skyhook.com/submit-access-point
3、如果所在位置的 GPS 信号良好,并且不想让设备位置由 Wi-Fi 或移动网络确定,那么可以前往Android 设备上的“设置” -> “位置” ,将位置模式固定为“仅设备”,即仅使用 GPS 来检测位置。
提示:请注意,在多层建筑、停车场或机场等地方,墙壁、屋顶和其他基础设施可能会干扰 GPS 信号,因此 GPS 可能无法使用。