Android Browser上的navigator.geolocation.getCurrentPosition失败

时间:2013-02-11 11:05:18

标签: android browser geolocation navigator

我正在尝试在Android浏览器上获取地理位置,但没有任何反应。我正在使用三星Galaxy S3,但我不确定我的浏览器版本。 Android版本是4.1.2 这是我的代码:

if (navigator.geolocation) {

            var timeoutVal = 10 * 1000 * 1000;
            navigator.geolocation.getCurrentPosition(
              displayPosition,
              displayError,
              { enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
            );
        }

这是我从此网站复制并粘贴的代码 它给了我“navigator.geolocation” 但是当谈到“getCurrentPosition”时,我的代码停止工作。移动Chrome工作正常,但事实并非如此。我分享了我的立场但仍然没有任何反应。任何帮助都会得到满足。 感谢。

谢谢大家,我找到了解决方案, 我在一些javascript操作后得到了地理位置。在文档准备好之前,我试图获取地理位置。它奏效了。

5 个答案:

答案 0 :(得分:1)

似乎PhoneGap存在地理位置问题 我有同样的问题 我正在使用S3与Android 4.1.2,phonegap地理位置功能不起作用

答案 1 :(得分:1)

为了获得没有错误的地理位置,你必须在使用地理定位提供的值之前使代码块工作,因为操作是异步执行的,在这个问题中我通过在其他地方之前加载我的地​​理定位脚本找到了解决方案。 js文件。这解决了我的问题,这个问题的另一个技巧是,当你给浏览器“读取”你的位置提供“始终”权限时,地理定位更加稳定。第一次加载后,您永远不会遇到地理位置错误。

答案 2 :(得分:0)

您是否在清单中提供了Internet权限?

<manifest xlmns:android...>
 ...
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>

答案 3 :(得分:0)

我知道这有点旧,但它一直在搜索,所以我想我会添加一个帮助我的提示。

因为我希望在页面加载时获得正确的位置,所以我发现在页面加载后我需要引入很短的延迟。当我没有延迟时,我不会得到任何错误,但我也不会激活手机上的位置协议。这半秒延迟解决了这个问题。你可以玩延迟,看看它是否解决了你的问题。

setTimeout(function(){getAutoLocation(true)},500);

我在“getAutoLocation(true)”函数中获取位置。此setTimeout仅用于引入延迟。

答案 4 :(得分:0)

我发现有些Android手机(旧的和新的)无法正常运行该功能 getCurrentPosition,也许是想节省一些电池。

我使用了watchPosition功能,然后启动了高精度GPS。

阅读本文以了解如何正确使用这些参数: http://dev.w3.org/geo/api/spec-source.html#watch-position

就我而言,这有效:

{
  maximumAge: 0, timeout: 2000, enableHighAccuracy: true
}

希望这有助于某人。