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了接入点的位置数据,我也不会感到惊讶。