navigator.geolocation.getCurrentPosition 在 Android 浏览器上失败
Posted
技术标签:
【中文标题】navigator.geolocation.getCurrentPosition 在 Android 浏览器上失败【英文标题】:navigator.geolocation.getCurrentPosition fails on Android Browser 【发布时间】:2013-02-11 11:05:17 【问题描述】:我正在尝试在 android 浏览器上获取地理位置,但没有任何反应。我使用的是三星 Galaxy S3,但我不确定我的浏览器版本。安卓版本为 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 操作后,我得到了地理位置。我试图在文档准备好之前获取地理位置。它奏效了。
【问题讨论】:
你的displayError
函数被调用了吗?你得到什么错误信息?
不,它没有被调用。我猜问题是“没有这样一个叫做getCurrentPosition的方法”
您检查了吗:***.com/questions/3397585/…?
【参考方案1】:
我知道这有点旧,但它不断出现在搜索中,所以我想我会添加一个对我有帮助的提示。
因为我想在页面加载时获得正确的位置,所以我发现我需要在页面加载后引入一个非常短的延迟。当我没有延迟时,我不会收到任何错误,但我也不会激活手机上的定位协议。这半秒的延迟解决了这个问题。你可以试试延迟,看看它是否能解决你的问题。
setTimeout(function() getAutoLocation(true),500);
我在“getAutoLocation(true)”函数中获得了位置。这个 setTimeout 的存在只是为了引入延迟。
【讨论】:
【参考方案2】:PhoneGap 的地理位置似乎有问题 我有同样的问题 我在 Android 4.1.2 上使用 S3,phonegap 地理定位功能不起作用
【讨论】:
【参考方案3】:为了获得正确的地理位置,您必须在使用地理位置提供的值之前使该代码块工作,因为操作是异步执行的,在这个问题中,我通过在其他之前加载我的地理位置脚本找到了解决方案。 js 文件。这解决了我的问题,这个问题的另一个技巧是,当您授予浏览器“始终”读取您的位置的权限时,地理定位工作更稳定。首次加载后,您永远不会遇到地理定位错误。
【讨论】:
【参考方案4】:我发现部分安卓手机(新旧)无法正常运行该功能
getCurrentPosition
,也许是想节省一些电池。
我玩了watchPosition
函数,然后高精度GPS启动了。
阅读本文以了解如何正确使用参数: http://dev.w3.org/geo/api/spec-source.html#watch-position
就我而言,这是有效的:
maximumAge: 0, timeout: 2000, enableHighAccuracy: true
希望这对某人有所帮助。
【讨论】:
【参考方案5】:您是否在清单中授予 Internet 权限?
<manifest xlmns:android...>
...
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
【讨论】:
我正在寻找答案,我在另一个答案中看到了这个,但我不知道在哪里添加这些行。你能告诉我吗? 顺便说一句,这不是本机应用程序,很抱歉我忘了说。以上是关于navigator.geolocation.getCurrentPosition 在 Android 浏览器上失败的主要内容,如果未能解决你的问题,请参考以下文章