我知道iPhone可以并且确实使用WiFi接近性来获取大约位置。显然,只有当天空中的某个数据库知道那个WiFi热点的大概位置时,才能发生这种情况。我的问题是,热点是如何进入该数据库的?是否在iPhone具有相当精确的GPS位置并检测到WiFi时自动添加,还是有一些手动或程序化的添加热点的方式?
自 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 地址最终会进入数据库。据我的经验,这个过程发生得非常快速。
iPhone使用Skyhook Wireless来确定WiFi位置。您可以使用他们的提交页面提交您的信息。
编辑:
显然这已经不再是真实情况了。现在苹果似乎直接从iOS设备中汇总这些数据。请参见评论。