地理定位不会在Phonegap中停止

jen*_*irf 7 javascript geolocation ios cordova

我跑的时候

window.onload = function () {
   document.addEventListener("deviceready", getGeolocation);
}

function getGeolocation() {
 navigator.geolocation.getCurrentPosition( successCallback, errorCallback, {maximumAge: 0});
}
Run Code Online (Sandbox Code Playgroud)

要么

function getGeolocation() {
 watchGeoMarkerProcess = navigator.geolocation.watchPosition(updateCallback, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)

然后

function updateCallback(position) {
   if (position.coords.accuracy < 100) {
            navigator.geolocation.clearWatch(watchGeoMarkerProcess);
   }
}
Run Code Online (Sandbox Code Playgroud)

在iOS 5上使用phonegap的应用程序中,似乎卡住了,因为地理位置指示器图标保持在顶部栏中并且它永远不会消失,我认为这意味着GPS没有被关闭.此外,有时我根本没有任何坐标,抛出超时错误.

我不认为代码有任何问题,因为它作为一个webapp工作得很好.

有任何想法吗?

Rya*_*yan 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 以外的平台上并不是问题。