Web浏览器地理定位如何工作?

时间:2010-09-03 07:47:18

标签: geolocation

我想知道geolocation如何在Google Chrome或Firefox等网络浏览器中运行?

我可以访问此网站http://html5demos.com/geo,当我允许浏览器发送我的位置时,它会显示我当前的位置。

但是当我将该URL发送给我的朋友进行测试时,它并不适用于所有这些网址。地理定位如何运作以及如何实施以获得正确的位置?

4 个答案:

答案 0 :(得分:5)

  

当您访问位置感知时   网站,Firefox会问你是否   想分享你的位置。

     

如果您同意,Firefox会收集   有关附近无线的信息   接入点和计算机的IP   地址。然后Firefox发送此信息   信息到默认的地理位置   服务提供商,Google位置   服务,以估计你的   地点。该位置估计是   然后与请求共享   网站。

http://www.mozilla.com/en-US/firefox/geolocation/

所以这取决于他们使用的浏览器和运气: - )

答案 1 :(得分:2)

了解它的工作原理:Wikipedia article讨论了几种技术(IP地址,手机和WiFi三角测量,GPS)。

在检索地理定位数据之前,HTML5实施需要浏览器支持(FF 3.6,Opera 10.60,Chrome 4?5?,IE可能有一天)用户同意。

至于如何实现它,code of the demo you link to似乎在MIT License之下,基本上说“你可以做任何事情,只要你将结果代码保留在许可证下”;所以你可以把这些代码作为构建的基础。

答案 2 :(得分:1)

来自W3C Geolocation API Specification的信息和示例:

  

Geolocation API定义了一个到位置的高级接口   仅与托管该设备的设备相关联的信息   实施,如​​纬度和经度。 API本身就是   不可知的基础位置信息源。共同   位置信息来源包括全球定位系统   (GPS)和从IP地址等网络信号推断出的位置,   RFID,WiFi和蓝牙MAC地址以及GSM / CDMA小区ID   作为用户输入。不保证API返回设备   实际位置。

你可以这样实现:

(一次性位置请求)

function showMap(position) {
  // Show a map centered at (position.coords.latitude, position.coords.longitude).
}

// One-shot position request.
navigator.geolocation.getCurrentPosition(showMap);

(请求重复更新位置)

function scrollMap(position) {
  // Scrolls the map so that it is centered at (position.coords.latitude, position.coords.longitude).
}

// Request repeated updates.
var watchId = navigator.geolocation.watchPosition(scrollMap);

function buttonClickHandler() {
  // Cancel the updates when the user clicks a button.
  navigator.geolocation.clearWatch(watchId);
}

答案 3 :(得分:0)

实际上,这取决于您使用的网站和浏览器的实施情况。

最简单的方法,不需要任何客户端扩展,是网页获取您的IP地址,并使用任何“IP地理定位”服务来询问您目前的位置。

第二个选项是浏览器有一个扩展,可以将您的坐标通告给网络服务器。在这些情况下,可以从客户端获取此信息,再次从ip到地理定位服务或连接到计算机的gps单元。例如,诺基亚N900和内置浏览器MicroB都有这种扩展。