【问题标题】:How does HTML 5 Geolocation works?HTML 5 地理位置如何工作?
【发布时间】:2011-08-28 02:59:30
【问题描述】:

我知道很多人都问过这个问题,但我认为我没有找到合适的答案。我的问题是,当您在 Firefox 的桌面上运行 HTML 5 Geolocation API 并单击共享位置时,它会获取您的 IP 地址,但它如何知道必须使用哪些无线点才能找到您的距离?我在家里运行应用程序,我得到了 50 m 的准确度,但我去隔壁的邻居有相同的互联网提供商,在他的桌面上我收到了 18 公里外的准确度?因此,如果有人可以向我解释这一点或指出在哪里阅读这些信息会非常有帮助?

谢谢

【问题讨论】:

标签: html geolocation ip-geolocation


【解决方案1】:

W3C Geolocation API 建立在现有技术之上,并深受 Google Gears Geolocation API 的影响。事实上,Firefox 的 Geolocation 实现使用了 Google 的网络位置提供程序。

Google Gears Geolocation 的工作原理是向网络位置提供商服务器发送一组参数,这些参数可以提示用户的物理位置,默认情况下,该服务器由 Google 提供(code.l.google .com)。其中一些参数是移动基站列表及其信号强度,以及检测到的 Wi-Fi 网络列表及其信号强度。这些参数被封装成 JSON 消息并通过 HTTP POST 发送给网络位置提供者。基于这些参数,网络位置提供者可以推断出位置。

“如果您允许网站通过此服务获取您的位置,我们 (google) 将根据您设备的功能收集有关离您最近的 wifi 路由器的信息、离您最近的手机信号塔的手机 ID ,以及您的 wifi 或手机信号的强度。我们使用此信息将估计位置返回给 Firefox 浏览器,然后 Firefox 浏览器将估计位置发送到请求网站。对于发送到我们 (google) 服务的每个请求,我们 ( google) 还会收集 IP 地址、用户代理信息和您客户的唯一标识符。我们使用这些信息来区分请求,而不是识别您的身份。”

来源:http://www.google.com/intl/en/privacy/lsf.htmlhttp://en.wikipedia.org/wiki/W3C_Geolocation_API

【讨论】:

    【解决方案2】:

    地理定位 API 可让您与受信任的网站共享您的位置。页面上的 JavaScript 可以使用经度和纬度,然后可以将其发送回远程 Web 服务器并执行一些奇特的位置感知操作,例如查找本地企业或在地图上显示您的位置。

    在调用 getCurrentPosition() 期间会发生什么?正如我在本章开头提到的,地理位置支持是可选的。这意味着您的浏览器永远不会强迫您向远程服务器透露您当前的物理位置。用户体验因浏览器而异。在 Mozilla Firefox 中,调用 geolocation API 的 getCurrentPosition() 函数会导致浏览器在浏览器窗口顶部弹出一个“信息栏”。

    对 getCurrentPosition() 的调用将立即返回,但这并不意味着您可以访问用户的位置。回调函数将使用单个参数调用,一个具有两个属性的对象:坐标和时间戳。时间戳就是计算位置的日期和时间。 (由于这一切都是异步发生的,您无法真正知道什么时候会提前发生。用户可能需要一些时间才能阅读信息栏并同意分享他们的位置。具有专用 GPS 硬件的设备可能需要更多时间连接到 GPS 卫星。等等。)坐标对象具有纬度和经度之类的属性,它们听起来就像:用户在世界上的物理位置。

    您可以从我获取上述信息的地方参考此链接: http://diveintohtml5.ep.io/geolocation.html

    【讨论】:

      【解决方案3】:

      HTML5 Geolocation API 在用户中使用某些功能,例如全球定位系统 (GPS)、设备的互联网协议 (IP) 地址、最近的移动电话塔和用户输入' 设备来检索用户的位置。使用 Geolocation API 检索到的用户位置几乎是准确的,具体取决于用于检索位置的源类型。

      这里有一个非常好的 HTML5 地理位置演示 (http://html5demos.com/geo)。每当网站尝试使用以下提及的 API 之一获取您的位置时,浏览器都会在调用 API 以共享您的位置之前询问我的许可。

      Geolocation API 提供以下方法:

      • getCurrentPosition(successCallback, errorCallback, options)

        用于检索用户当前的地理位置。

      • watchPosition(successCallback, errorCallback, options)

        该函数返回一个 watchId 并使用更新后的坐标调用 successCallback。随着用户的移动(如汽车中的 GPS),它会继续返回更新的位置。

      • clearWatch(watchId)

        根据提供的 watchId 停止 watchPosition() 方法。

      示例代码:

      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(userPositionSuccess, userPositionError);
      } else {
        alert("Your browser does not support geolocation.");
      }
      
      function userPositionSuccess(position) {
        alert("Latitude: " + position.coords.latitude + " Longitude: " + position.coords.longitude);
      }
      
      function userPositionError() {
        alert("There was an error retrieving your location!");
      }
      

      【讨论】:

      • 您的演示页面在桌面浏览器上失败,如果您有更新,我怀疑它已经过时了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      相关资源
      最近更新 更多