当我跑步时
window.onload = function () {
document.addEventListener("deviceready", getGeolocation);
}
function getGeolocation() {
navigator.geolocation.getCurrentPosition( successCallback, errorCallback, {maximumAge: 0});
}
或
function getGeolocation() {
watchGeoMarkerProcess = navigator.geolocation.watchPosition(updateCallback, errorCallback);
}
然后
function updateCallback(position) {
if (position.coords.accuracy < 100) {
navigator.geolocation.clearWatch(watchGeoMarkerProcess);
}
}
在我的应用程序在iOS 5上使用phonegap它似乎卡住了,因为地理位置指示器图标保持在顶部栏并且它永远不会消失,我认为这意味着GPS没有被关闭。此外,有时我根本没有任何坐标,抛出超时错误。
我认为代码没有任何问题,因为它可以很好地用作webapp。
有什么想法吗?
答案 0 :(得分:3)
navigator._geo是我相信的“真实”实现。我已经看到最近的git提交,他们试图覆盖navigator.geolocation但显然在iOS上失败了。查看phonegap源代码让我想到尝试真正的调用。
这是问题的另一个主题: https://groups.google.com/forum/?fromgroups#!topic/phonegap/W32yYpV28W8
更新:我现在有一定程度的成功: 编辑你的phonegap.js,注释掉3451-3453行,如下所示: __proxyObj(navigator.geolocation,navigator._geo,...
您将收到一个丑陋的权限警告..但该位置应该有效。这种变化背后的原因是你现在将使用safari的位置检测,而不是PhoneGaps。
UPDATE2:..而PhoneGap的问题与另一个javascript库发生了冲突,在本例中为dragdealer.js。因此,请仔细检查您正在使用的任何其他JavaScript中的“位置”或“位置”等可疑变量名称。出于某种原因,这种冲突在iOS以外的平台上不是问题。
答案 1 :(得分:1)
为了它的价值我有同样的问题,这些修复不起作用。但他们可能适合你:
答案 2 :(得分:0)
我遇到了同样的问题,尽管在Android上。
添加enableHighAccuracy选项使其开始工作:
navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy:true} );