HTML5 Geolocation 忽略 enableHighAccuracy 选项?

Posted

技术标签:

【中文标题】HTML5 Geolocation 忽略 enableHighAccuracy 选项?【英文标题】:HTML5 Geolocation ignores enableHighAccuracy option? 【发布时间】:2013-07-22 04:26:40 【问题描述】:

我目前正在编写一个可能会受到移动设备影响的网络应用程序。在某些时候,我需要通过 html5 的 getCurrentPosition() 来检索用户的位置。我宁愿尽可能快地进行粗略的修复,所以我调用这个函数并将 enableHighAccuracy 参数设置为 false。

大多数情况下,这按预期工作;但是,在某些 android 设备上,浏览器显然会忽略此属性并始终尝试获取 GPS 位置(GPS 图标出现在通知栏上)。有趣的是,即使我在“设置”中手动禁用 GPS 定位,也会发生这种情况。

这似乎与浏览器无关,我已经用 Chrome、Firefox 和 Opera 测试了相同的代码,并且发生了如下简单代码:

<!doctype html>
<html>
<head>
    <script type="text/javascript">
        function getLocation() 

            if (navigator.geolocation)
            
                navigator.geolocation.getCurrentPosition(onLocationReceived, onLocationError, timeout: 5000, enableHighAccuracy: false);
            
            else
                alert("Geoloc not supported by your browser");
        

        function onLocationReceived(position) 
            alert("Location retreived! " + position.coords.latitude + ", " + position.coords.longitude + " (" + position.coords.accuracy + ")");

        

        function onLocationError(error) 
            alert("Received an error! " + error.message + "(" + error.code + ")");
        
    </script>
</head>
<body>
    <button onclick="getLocation();">Get location</button>
</body>

到目前为止,HTC One 和小米 1S 都发生了这种情况。你有没有遇到过这个问题?也许这是一个已知的错误?

谢谢。

【问题讨论】:

【参考方案1】:

是的,我在 Android Lollipop 和 Chrome 43 上遇到了同样的情况。 我希望我可以在没有 highAccuracy 的情况下执行 getCurrentPosition,同时在启用 highAccuracy 的情况下启动 watchPosition。

但是没有。两个调用在相同(较晚)时间返回,具有相同的 (GPS) 结果...

https://bugzilla.mozilla.org/show_bug.cgi?id=1057076

http://www.hyam.net/blog/archives/1432

【讨论】:

以上是关于HTML5 Geolocation 忽略 enableHighAccuracy 选项?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 Geolocation(地理定位)简介

HTML5 Geolocation(地理定位)简介

Html5之应用-1 Geolocation(Geolocation百度地图API)

在 html5 中自定义 navigator.geolocation 栏

HTML5 Geolocation位置信息定位总结

HTML5 Geolocation 简单示例不起作用