我想知道地理定位在Google Chrome或Firefox等web浏览器中是如何工作的?
我可以访问这个网站的http://html5demos.com/geo,当我允许浏览器发送我的位置时,它会显示我的当前位置。
但当我将这个URL发送给我的朋友进行测试时,它并不适用于所有的朋友。地理定位是如何工作的,我如何实现它以获得正确的位置?
发布于 2010-09-03 15:55:02
它的工作原理:Wikipedia article讨论了几种技术(IP地址定位,手机和WiFi三角测量,全球定位系统)。
在检索地理位置数据之前,HTML5实现需要浏览器支持(FF 3.6,Opera10.60,Chrome4.5? 5?,IE也许有一天)和用户同意。
至于如何实现它,code of the demo you link to似乎遵循MIT License,它基本上是说“你可以做任何事情,只要你把结果代码保存在许可证下”;所以你可以把这些代码作为构建的基础。
发布于 2010-09-03 15:52:14
当你访问一个位置感知网站时,火狐会问你是否想分享你的位置。
如果你同意,Firefox会收集附近无线接入点的信息和你电脑的IP地址。然后,Firefox将这些信息发送到默认的地理定位服务提供商Google location Services,以获得您的位置估计。然后,将该位置估计值与请求网站共享。
http://www.mozilla.com/en-US/firefox/geolocation/
因此,这取决于他们使用的浏览器和一些运气:-)
发布于 2013-08-13 21:37:07
来自W3C Geolocation API Specification的信息和示例
地理定位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);
}
https://stackoverflow.com/questions/3633879
复制相似问题