使用 navigator.geolocation 获取地理位置

Posted

技术标签:

【中文标题】使用 navigator.geolocation 获取地理位置【英文标题】:Get Gelocation using navigator.geolocation 【发布时间】:2012-09-20 08:23:23 【问题描述】:

我编写了一个 javascript 来获取用户地理位置。它给了我纬度和经度,并据此我在地图上绘制了用户位置,但是当我在谷歌地图中检查该位置的纬度和经度时,它是不同的,因此它绘制了错误的位置。

function map()

    if (navigator.geolocation) 
        browserSupportFlag = true;
        navigator.geolocation.getCurrentPosition(function (position) 
            initialize(position.coords.latitude,position.coords.longitude);
        , function () 
            handleNoGeolocation(browserSupportFlag);
        );
     else 
        browserSupportFlag = false;
        handleNoGeolocation(browserSupportFlag);

请告诉我如何使用navigator.geolocation 获得准确的纬度和经度。

【问题讨论】:

您是在真机还是模拟器上试用您的代码? 有多大不同?请注意,html5 地理定位 API 并不完全精确,但它会生成 close guess。 也许您可以尝试其他解决方案,例如 google API 的 clientLocation。 感谢您的快速回复。 @Littm 我没有在任何真实设备上尝试过,我刚刚创建了一个网站,我想在地图上显示访问过的用户位置,但我遇到了上述问题。 @Marcok 我正在使用 HTML5 差异在十进制中的含义较少,但显示不同。 【参考方案1】:

地理位置功能通过使用可通过各种来源获得的地理位置信息来工作,具体取决于设备。这包括卫星数据、无线电跟踪设备、互联网硬件以及无线通信设备。 更准确地说,该系统利用 GPS、RFID、IP 地址、Wi-Fi 和蓝牙 Mac ID 或移动电话塔和手机 ID。因此,如果您正在尝试浏览器,那么这将取决于浏览器及其设置。它可能使用 GPS、基于 WLAN AP 的位置、IP 位置或任何其他可以想到的定位方法。

浏览器在您的本地计算机上运行,​​因此即使您使用代理,它也应该能够找到您的实际 IP 地址(除非安全功能阻止将其发送到地理定位服务器以进行查找)。 别的 如果您在打开 gps 的移动设备上尝试,那么根据我过去使用地理定位 api 的经验,它应该可以提供非常准确的结果

【讨论】:

感谢您的回复,那么有没有其他方法可以让我更接近纬度和经度,或者在这种情况下可以接受一些差异。 你在什么设备上尝试?而且我猜有一些准确度参数是为了获得高精度结果 当我在浏览器上测试它时,它显示我的位置距离我的确切位置 8 公里。它从浏览器上的您的 IP 地址解析。因此在尝试从您的网络地址获取位置时,它不会像您期望的那样准确。

以上是关于使用 navigator.geolocation 获取地理位置的主要内容,如果未能解决你的问题,请参考以下文章

navigator.geolocation 给出错误的结果

html5-geolocation : navigator.geolocation.watchPosition 连续回调

带有 navigator.geolocation.watchPosition 的连续标记

Cordova geolocation navigator.geolocation.getCurrentPosition 错误的窗口访问位置

在 Map 和 navigator.geolocation 上使用 Leaflet 的多个事件

传单地图:使用 navigator.geolocation.watchPosition 更新标记?