HTML5的GeoLocation究竟是如何工作的?
我知道浏览器分享我的IP地址和附近的无线networking的细节,以确定我的位置,但是它知道附近的WiFinetworking什么样的信息?
例如,我住的地方没有公共无线networking,从我家可以看到大约5个私人networking,但是我的位置在20米之内。 由于附近没有开放的networking,Google如何确定我的位置? 我能想到的唯一方法就是Google在街道上绘制街景时映射了所有无线networking的位置。
我在网上search,但我找不到任何具体的细节。
Firefox向Google发送的数据适用于所有可见的接入点,公共或私人接入点 。 对于检测到的每个接入点,它会将以下数据发送到https://www.google.com/loc/json
:
"mac_address": "01-23-45-67-89-ab", "signal_strength": 8, "age": 0, "SSID": "MyAccessPoint"
哪里
-
mac_address
是WiFi节点的mac地址。 -
signal_strength
是以dBm为单位测量的当前信号强度。 -
age
是自检测到WiFi节点以来的毫秒数。 -
SSID
是WiFi节点的名称或ESSID 。
当谷歌驾驶StreetView拍照时 , 收集了用于对您的请求进行地理编码的地理参考WiFi数据。
但需要注意的是,这就是HTML5地理位置API如何在Firefox上使用Google的地理定位服务实现的。 这是一个实现,而不是一个规范。 如果您的设备具有内置的GPS,则可能需要您的HTML5实施直接查询GPS,而不是使用地理定位服务。
即使Firefox在Windows和Linux上也有不同的function。 使用Windows上的当前Firefox,将所有可见的WiFi节点的详细信息发送给Google。 使用Linux上的当前Firefox,由于依赖libiw
访问点数据,只发送当前连接的WiFi节点的详细信息。
正如另一位回答者指出的那样,Safari使用Skyhook Wireless的服务与Google的定位服务完全相同。
数据由Skyhook Wireless(维基百科)收集,他们不区分公共和私人WiFi点 – 他们logging所有的位置。 如果Google街景视图广告客户还logging了接入点的位置数据,我也不会感到惊讶。