代码之家  ›  专栏  ›  技术社区  ›  Alix Axel

关于HTML 5中的地理位置

  •  27
  • Alix Axel  · 技术社区  · 14 年前

    在火狐的帮助下,谷歌地图现在可以精确地定位我的位置。

    我知道这是HTML5兼容浏览器的一个新功能,并且位置是通过使用连接的WiFi网络的某种功能获取的(我希望我没有做任何愚蠢的假设)。

    我想知道的是整个过程是如何工作的:

    • 为什么只有HTML 5?
    • 为什么/如何要求我与谷歌地图分享我的位置?
    • 一个人能指望的正常精度是多少?
    • 如何在我的网站中实现此功能?

    事先谢谢!

    3 回复  |  直到 11 年前
        1
  •  35
  •   Daniel Vassallo    14 年前

    它是如何工作的?

    当你在火狐中访问一个位置感知网站时,浏览器会询问你是否想分享你的位置。

    如果您同意,firefox会收集有关附近无线接入点和计算机IP地址的信息,并将这些信息发送到 Google Location Services (Firefox中的默认地理位置服务)。然后,该位置估计将与请求的网站共享。( Source )

    位置的准确度如何?

    不同位置的精度差异很大。在某些地方,地理定位服务提供商可以在几米之内提供一个位置。然而,在其他领域,这可能远远不止这些。所有位置均应视为估计值,因为无法保证所提供位置的准确性。( 来源 )

    在我的例子中,火狐报告说我离真实位置大约10公里。

    如何在我的网站中使用此功能?

    您可以这样做:

    if (navigator.geolocation) { 
        navigator.geolocation.getCurrentPosition(function(position) {  
    
            alert(position.coords.latitude + ", " + position.coords.longitude);
    
            // Use the latitude and location as you wish. You may set a marker
            // on Google Maps, for example.
        }); 
    } 
    else {
        alert("Geolocation services are not supported by your browser.");
    }  
    

    您可以在这里看到一个在线演示: Firefox HTML 5 Geolocation Demo (需要地理位置感知浏览器,如firefox 3.1b3。)

        2
  •  14
  •   mjv    14 年前

    HTML5电源 an API

    它允许Web浏览器(然后是Web应用程序的服务器端)以标准、统一的方式查询位置和相关信息,如速度(如果相关)。

    主机及其Web浏览器提供“设备”,这些设备本身计算/估计地理位置。

    要使此API有用,需要基础主机和Web浏览器
    a)允许共享此类信息(注意隐私问题),以及
    b)具备一定的设备(本地或通过其连接的网络)来读取或估计地理位置。

    计算实际位置所涉及的技术和设备包括以下各项的组合(当然并非全部适用),并且 独立于HTML5标准 :

    • GPS设备(现在很多手机都有)
    • 移动电话网络级别的路由信息
    • IP地址/ISP路由信息
    • WiFi路由器信息
    • 固定数据,手动输入(对于固定位置的PC)

    因此…
    - HTML5 单独地 无法确定地理位置:升级到较新的Web浏览器本身不足以在应用程序中获得地理位置功能等。
    -地理位置数据可以在HTML5 API之外共享,允许GPS就绪或地理位置就绪电话在其他API中公开地理位置数据。

        3
  •  0
  •   Manish Chhabra    11 年前

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

    这里有一个很好的HTML5地理定位演示( http://html5demos.com/geo )每当一个网站试图通过使用下面提到的某个API来获取您的位置时,浏览器会在调用该API来共享您的位置之前请求我您的许可。

    地理定位API提供以下方法:

    • GETCURRENTPOSITION(成功回调、错误回调、选项)

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

    • 监视位置(成功回调、错误回调、选项)

      函数返回一个watchID,并使用更新的坐标成功调用回调。当用户移动时,它会继续返回更新的位置(就像汽车中的GPS)。

    • ClearWatch(监视ID)

      根据提供的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!");
    }