地理定位不会在Phonegap中停止

时间:2012-03-16 12:39:11

标签: javascript ios cordova geolocation

当我跑步时

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。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

navigator._geo是我相信的“真实”实现。我已经看到最近的git提交,他们试图覆盖navigator.geolocation但显然在iOS上失败了。查看phonegap源代码让我想到尝试真正的调用。

这是git提交: http://mail-archives.apache.org/mod_mbox/incubator-callback-commits/201203.mbox/%3C20120307000809.B82AA5D82@tyr.zones.apache.org%3E

这是问题的另一个主题: 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)

为了它的价值我有同样的问题,这些修复不起作用。但他们可能适合你:

  • 确保在调用onDeviceReady()后获取位置
  • 尝试使用navigator._geo.getCurrentPosition

答案 2 :(得分:0)

我遇到了同样的问题,尽管在Android上。

添加enableHighAccuracy选项使其开始工作:

navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy:true} );