我想知道geolocation如何在Google Chrome或Firefox等网络浏览器中运行?
我可以访问此网站http://html5demos.com/geo,当我允许浏览器发送我的位置时,它会显示我当前的位置。
但是当我将该URL发送给我的朋友进行测试时,它并不适用于所有这些网址。地理定位如何运作以及如何实施以获得正确的位置?
答案 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都有这种扩展。