HTML5的GeoLocation究竟如何运作?

时间:2010-06-14 21:34:26

标签: google-maps html5 geolocation geocoding

我知道浏览器会分享我的IP地址和附近无线网络的详细信息,以确定我的位置,但它知道附近的无线网络有哪些信息?

例如,我居住的地方没有公共无线网络,从我家我可以看到大约5个私人网络,但我的位置确定在20米内。由于附近没有开放式网络,Google如何确定我的位置?我能想到的唯一方法是,Google在为街景视图绘制街道时映射了所有无线网络的位置。

我在网上搜索过,但我找不到任何具体细节。

2 个答案:

答案 0 :(得分:68)

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

用于对您的请求进行地理编码的地理配准WiFi数据为collected when Google was driving around taking pictures for StreetView

值得注意的是,这就是使用Google的地理定位服务在Firefox上实现HTML5地理定位API的方式。 这是一项实施,而非规范。如果您的设备具有内置GPS,则可能需要您的HTML5实施直接查询GPS,而不是使用地理定位服务。

即使firefox在Windows和Linux上实现此功能也不同。在Windows上使用当前的Firefox,所有可见WiFi节点的详细信息都将发送给Google。在Linux上使用当前的Firefox,由于访问点数据为reliance on libiw,因此仅发送当前连接的WiFi节点的详细信息。

正如另一位回答者所说,Safari使用Skyhook Wireless的服务与Google的位置服务大致相同。

答案 1 :(得分:6)

数据由Skyhook Wireless (Wikipedia)收集,他们不区分公共和私人wifi点 - 他们记录所有这些点的位置。如果谷歌街景货车还记录了接入点的位置数据,我不会感到惊讶。