iPhone如何学习新的WiFi位置以便在定位估计中使用?

12

我知道iPhone可以并且确实使用WiFi接近性来获取大约位置。显然,只有当天空中的某个数据库知道那个WiFi热点的大概位置时,才能发生这种情况。我的问题是,热点是如何进入该数据库的?是否在iPhone具有相当精确的GPS位置并检测到WiFi时自动添加,还是有一些手动或程序化的添加热点的方式?

3个回答

12

自 iOS 3.2 起,苹果开始使用自己的数据库(此前使用 Skyhook Wireless),其工作原理是通过启用 GPS 的 iOS 设备向苹果发送 WiFi MAC 地址。因此,如果设备有 GPS 定位功能,则会自动将所见到的所有 WiFi MAC 地址和 GPS 定位到的位置一起发送给苹果。用户无法更改此行为,除非更改“核心定位”开关。用户必须接受 EULA 中规定的该传输行为。

通过 WiFi 进行位置检测的方式则相反,它会将所有被发现的 WiFi MAC 地址发送给苹果,然后苹果会回应位置信息。他们甚至通过尽可能多地在手机上缓存 WiFi 地址来进行重度优化,因此这种方式即使在没有任何网络连接的 iPod touch 上也可以部分实现。

该算法的弱点是 MiFi 等设备(重新定位 WiFi 热点)。目前,“核心定位”并不能很好地丢弃明显错误的 WiFi 位置。例如,在没有 GPS 接收的室内贸易展览会上,由于存在许多 MiFi 设备,因此要准备因此而得到错误的位置更新。

针对您手动添加 WiFi 热点的问题:不,没有办法这样做。只需使用运行 iOS 3.2 或更高版本的 GPS 启用的 iPhone/iPad,MAC 地址最终会进入数据库。据我的经验,这个过程发生得非常快速。


1
我在这里重新激活一个已经死亡的帖子,报告了我刚遇到的苹果Wi-Fi定位系统及其自我更新中的一个重大概念缺陷。
我正在部署一种新的Wi-Fi网络,安装在游轮上,我们正在调整它,并在从西班牙的船厂返回到游轮所在的母港时进行微调。
每当我在低层甲板上,在GNSS星座的视线范围之外时,我iPhone上的各种位置启用应用程序会恢复到船厂的位置……看起来,当船只在临时陆地互联网链接上时,船上的众多苹果设备都会忠实地报告一堆未知的ESSIDs和BSSIDs,这些ESSIDs和BSSIDs与设备GNSS位置以及IP位置相关联,据推测给苹果提供了高度的位置确定度。看起来ESSID优先级更高,因为所有BSSID都是全新的。由于它自从我们出航并使用卫星互联网链接后就没有更新位置,而GeoIP标记为在美国的多个位置,因此卫星位置(尤其是不断变化的位置)和IP地址地理位置之间的差异可能导致它拒绝更新,而选择保留具有更高确定度的先前更新。
底线是,不要指望WiFi定位在移动物体上能够精确到甚至近似。苹果表示他们无法在移动的交通工具如火车、飞机或船只上列入ESSIDs黑名单。这可能是苹果应该重新设计的问题。如果有一种方法可以通过802.11信标帧发送位置信息,那将非常好。

1

iPhone使用Skyhook Wireless来确定WiFi位置。您可以使用他们的提交页面提交您的信息。

编辑:

显然这已经不再是真实情况了。现在苹果似乎直接从iOS设备中汇总这些数据。请参见评论。


2
苹果不再使用Skyhook了。(http://www.fool.com/investing/general/2010/08/04/apple-drops-skyhook-wireless-technology-from-iphon.aspx)有人知道如何在数据库中注册苹果正在使用的技术吗? - Greg Maletic
1
@Greg,不是很好。你最好使用带有GPS的iOS设备在该位置上。然后,WiFi网络将自动添加到苹果的数据库中。 - Ortwin Gentz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接