HTML5地理定位是如何工作的?

Chrome 和 Firefox 都实现了 HTML 地理定位。

我的问题是: 它是如何工作的?他们是否在本地有一个数据库,然后从提供者那里获得信息,然后尝试匹配它?

数据库存放在哪里? 能进去吗?

Update1: 地理定位的唯一缺点是浏览器必须征求用户的许可,这对可用性来说真的是一件坏事。我理解安全问题,但我仍然不明白这将如何成为一个流行的解决方案。

更新2: Firefox 使用 GoogleWebService 来检测位置。考虑到他们现在是竞争对手,这似乎很奇怪。而且这种行为对我来说真的很出乎意料... 我希望每个浏览器都有它的在线(也许是离线)解决方案。

Update3: 所以浏览器实际上是通过你的无线网卡来嗅探路由器的?

更新4: 最终浏览器发送什么信息给谷歌网络服务?被检测到的 SSID 看起来还不错(如果它们被谷歌根据物理位置跟踪以便在数据库中查找匹配的信息,这也是有道理的) ,但是在谷歌没有扫描这些信息的国家,它是如何工作得如此出色的呢?你的浏览器发送的其他信息是你的 IP 地址,但这不足以确定你的确切位置,对吗?

关于其他可能实现此功能的浏览器。他们应该怎么做?API 没有文档化,只有陈旧的、不被推崇的 GEARapi 提供了一些线索。所以这不是真正的公开。

45338 次浏览

首先,精彩的小样

在 Chrome 中尝试 这个

它是如何工作的

这里 是你的答案。点击“谷歌浏览器如何确定你的位置”。

从那一页:

如果你允许谷歌浏览器与网站共享你的位置,浏览器将向谷歌位置服务发送本地网络信息,以获得你的位置估计值。然后浏览器可以与请求站点共享您的位置。Google 位置服务用来估计你的位置的本地网络信息包括关于可见 WiFi 接入点的信息,包括它们的信号强度; 关于你的本地路由器的信息; 你的计算机的 IP 地址。谷歌位置服务的准确性和覆盖范围将因地区而异。

谷歌浏览器保存你的位置信息,以便于检索。此信息定期更新; 更新的频率取决于对本地网络信息的更改。

此外,我相信谷歌位置服务包含一个数据库建立从谷歌街景面包车收集的数据,因为他们匹配的位置与无线信号从路由器(或至少 曾经是)。

正在访问数据库

至于数据库(谷歌位置服务) ,这个 SO 问题将帮助您访问它。

在 Firefox 中打开一个新的选项卡并输入地址 about:config。越过警告消息并在过滤框中键入 geo.wifi.uri,您现在正在查看 Firefox 用于确定您的位置的 Web 服务。

不管怎样,API 规范本身对于地理定位实现是不可知的。因此,尽管 Mozilla Firefox 和 Google Chrome 都依赖于通过 Google 的位置服务数据库实现的网络地理定位,但这并不是标准的要求。例如,iPhone 上的 Mobile Safari 在某些情况下会使用 GPS,而不是 WiFi 三角定位或手机站点地理定位,这取决于在给定时刻哪种定位服务是最准确和可访问的。

我们希望未来的浏览器能够提供一些位置提供者的选择。我同意,如果浏览器支持不需要向第三方发送 WiFi ID 列表的地理定位技术,将有利于用户的隐私和功能; 我怀疑,随着 GPS 传感器更多地集成到智能手机和笔记本电脑中,我们将看到浏览器让你使用 W3C 地理定位 API 的 GPS 传感。如果桌面计算机有一个可以在浏览器设置中手动指定位置的功能,那也是不错的,这也将与当前的规范兼容。

我对 update4中最后一个问题的猜测是,他们可能会根据您使用的设备不时更新您的位置。例如,如果你只使用你的个人电脑访问网络,并且附近没有已知的 wifi 网络,那么你的位置将由 IP 地址决定,然而关于你的网络信息将被收集,稍后说你连接 iPhone 或任何其他装有 GPS 的设备到你同样的 wifi 网络,并在其上使用 GPS,谷歌将匹配这些 GPS 坐标到你的 wifi SSID 或 IP 地址。所以,在那之后,每当你的电脑上的浏览器发送一个地理定位请求,它会检查 IP 和 SSID 是否匹配(也许还有一堆其他的东西,比如 SSID 在附近等等) ,如果他们匹配,它会返回的位置,以前是由你的 GPS 设备确定的。这当然只是一个猜测,但也有可能是真的。.另外,即使你从来没有连接任何 GPS 设备到你的网络,但它仍然准确地确定,这可能是因为附近的 wifi 网络,谷歌已经知道。.他们的工作确实很棒:)

更新:
火狐
谷歌 Chrome 浏览器

来自 火狐的“如何工作”:

当你访问一个位置感知网站时,Firefox 会询问你是否想分享你的位置信息。
如果你同意,Firefox 会收集附近无线接入点的信息和你电脑的 IP 地址。然后 Firefox 将这些信息发送给默认的地理定位服务提供商 Google Location Services,以获得对您所在位置的估计。然后与请求网站共享该位置估计。
如果你说你不同意,Firefox 将不会做任何事情。

以及 “ Chrome 如何确定你的位置”台:

如果你允许谷歌浏览器与网站共享你的位置,浏览器将向谷歌位置服务发送本地网络信息,以获得你的位置估计值。然后浏览器可以与请求站点共享您的位置。在与他们分享你的位置之前,你应该检查一下网站的隐私政策。