【问题标题】:Why HTML5 Geolocation?为什么选择 HTML5 地理位置?
【发布时间】:2011-11-24 09:38:01
【问题描述】:

为什么 HTML5 地理位置可以让您共享您的位置?使用地理位置的主要目的是什么,因为您也可以通过 IP 地址获取位置。这两种方法有什么区别吗?

我问是因为地理定位需要用户的许可,而且也不适用于所有浏览器。

【问题讨论】:

  • 您无法使用 IP 地址获得准确的位置。最好的办法是给出给出 IP 地址的 ISP 的位置。我曾经在一家美国公司工作,该公司的 IP 地址来自英国......
  • @John Saunders - 公平地说,这是 IP 位置数据库未能保持最新状态,而不是 IP 地址本身位于错误的位置。
  • 为什么? “IP 位置数据库”从来都不是,也永远不可能是使用特定 IP 地址的计算机的位置数据库。它只不过是提供 IP 地址的 Internet 服务提供商的位置数据库。充其量,它可以保存 ISP 虽然 IP 地址将被使用的位置。就我而言,路由实际上是在伦敦执行的,所以美国的所有数据包都经过英国!

标签: html geolocation


【解决方案1】:

您将看到的主要区别是准确性。 IP 地址只能让您大致了解某人可能在哪里……地理位置会告诉您他们的确切位置。要了解有关地理定位的更多信息,请转到 here,并在 here 找到有关其精确度的演示。

【讨论】:

    【解决方案2】:

    地理位置比 IP 地址更精确很多,尽管两者都可以伪造。

    IP 地址只提供您所在的国家和地区。

    地理位置为您提供:

    • 地理坐标(经纬度)
    • 速度(假设您使用的设备可以测量此速度;大多数平板电脑和智能手机都可以)
    • 海拔高度(这也取决于设备)
    • 从北顺时针方向(再次假设设备支持)

    http://diveintohtml5.ep.io/geolocation.html 有一些关于地理位置和 HTML5 地理位置 API 的好信息。 Here's W3C 候选推荐。

    【讨论】:

      【解决方案3】:

      HTML5 GeoLocation 往往比基于 IP 的 GeoLocation 更准确很多

      基于 IP 的地理位置取决于与 ISP 关联的数据库来确定您的位置。当您的 ISP 服务于非常大的区域并提供动态 IP 地址时,这将无法正常工作。今天在一个城镇的地址明天可能在 100 英里之外。此外,这些数据库通常不会经常更新。如果您的 ISP 出售 IP 块或将它们转移到新城镇,数据库可能仍会错误地认为您在其他地方。

      HTML5 位置使用您的浏览器提供的服务来确定您的位置。如果您的计算机内置 GPS(例如在许多移动设备和某些笔记本电脑上),它会准确地知道您在哪里。这使得它对于具有导航或位置组件的 web 应用程序更加有用。对于没有 GPS 的设备,它通常可以根据附近已知的无线信号和其他因素提供非常好的近似值,例如跟踪您的计算机在连接​​到互联网时经过的路由器。确切的实现取决于计算机、可用的硬件以及浏览器选择执行操作的方式。

      例如,当我查看基于 IP 的定位服务时,它显示我在我所居住的同一一般区域的特定大城市中,但实际上距离大约 50 英里。 当我使用基于 HTML5 位置的服务来确定我在哪里时,它只相差了大约 20 个blocks

      如果您正在开发需要位置数据的 web 应用程序,尝试尽可能使用 HTML5 GeoLocation。设置回退,以便 if HTML5 定位失败,您可以改用 GeoIP 解决方案。这样,您将在受支持的浏览器和设备上获得最佳准确度,但在 HTML5 数据不可用时仍有解决方案。

      如果您使用geolocation-javascript project from Google Code,您可以使用以下代码:

      //determine if device has geo location capabilities
      if(geo_position_js.init()){
         geo_position_js.getCurrentPosition(success_callback,error_callback);
      }
      else{
         // use an AJAX request to look up the location based on IP address
      }
      

      【讨论】:

      • error_callback 也可以发出 Ajax 请求,因此您只需在 else 块中调用 error_callback()
      • @alpha123 好点,这将是一种更有效的方式。
      【解决方案4】:

      通过 IP 地址获取位置只会给出一个模糊的位置(它很少比城镇更准确,而且通常比这更准确,具体取决于您的位置和 ISP)。

      有时也完全不准确:如果我使用 VPN 连接到我的公司网络,我会显示在他们的办公室,因为我将有一个来自办公室的 IP 地址,但我实际上可以从任何地方连接在世界上。

      HTML5 地理定位可以更加准确 - 如果您的设备中有 GPS 接收器,那么它是完全准确的,但即使没有它,在人口稠密的地区,它也可以以 20 米或更小的精度获得您的位置通过映射本地无线网络信号。不管你是如何连接的,它总是准确的。

      由于 HTML5 地理位置非常准确,因此被认为存在隐私风险,因此规范规定您必须先授予权限,然后网站才能使用您的地理位置数据。此外,并非所有浏览器或机器都能够提供地理位置数据。因此,该网站必须能够应对不提供且不能依赖提供的用户。

      IP 地址位置没有这种限制,因为位置映射是由服务器使用公开可用的 IP 位置映射数据完成的。最终用户无法避免给出他们的 IP 地址,因此他们无法阻止网站映射他们使用它。

      所以两者完全不同。

      【讨论】:

        【解决方案5】:

        通过 IP 地址获取用户的位置远没有那么准确。 IP地址的位置主要基于实际服务器的位置,可以请求。通常这与实际用户的位置相距甚远,因此它只提供基本区域。

        另一方面,HTML5 地理位置更精确,但用户的信息用于确定位置,并且通常还与其他一些东西一起加快速度。这基于设备的 GPS(如果可用),否则基于用户输入的信息。显然,这更准确。不过这两种方法都可以伪造。

        【讨论】:

          【解决方案6】:

          HTML5 地理定位使客户端(浏览器)能够提供机器的位置信息。这可能比 IP 定位更准确几个数量级。例如,客户端可能安装了实际的 GPS 硬件,或者能够通过 GSM 或 WiFi 点对位置进行三角测量。另一方面,IP 定位非常粗略,介于不总是准确和误导之间。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-08-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多