Ios PhoneGap navigator.compass.getCurrentHeading在iPhone上多次调用

Ios PhoneGap navigator.compass.getCurrentHeading在iPhone上多次调用,ios,xcode4,cordova,Ios,Xcode4,Cordova,我将非常感谢任何帮助来解决这个问题——或者至少在哪里寻找解决方法 我在iPhone上调用的是navigator.compass.getCurrentHeading(成功,失败),每次移动设备时都会调用success函数。在XCode调试日志中,我看到为每个动作生成了大量的navigator.compass.setHeading调用条目。如果我再次尝试轮询标题数据,请求就会挂起。代码如下: function onBodyLoad() { if (typeof navigator.devic

我将非常感谢任何帮助来解决这个问题——或者至少在哪里寻找解决方法

我在iPhone上调用的是navigator.compass.getCurrentHeading(成功,失败),每次移动设备时都会调用success函数。在XCode调试日志中,我看到为每个动作生成了大量的navigator.compass.setHeading调用条目。如果我再次尝试轮询标题数据,请求就会挂起。代码如下:

function onBodyLoad() {
    if (typeof navigator.device == "undefined") {
        document.addEventListener("deviceready", onDeviceReady, false);
    } else {
        onDeviceReady();
    }
}

function succ(heading) {
    alert("compass " + heading);
}

function fail() {
    alert('fail');
}

function onDeviceReady() {
    navigator.compass.getCurrentHeading(succ, fail);
}
这是一种非常奇怪的行为,因为我希望只调用一次getCurrentHeading并返回一个结果,而不是不可阻挡的事件


我使用PhoneGap 1.0.0。同样的代码在Android上也能完美地工作。我已经删除了所有自定义JS代码,以防止冲突的可能性。

奇怪的是,似乎没有其他人会遇到这种情况。在任何情况下,这个(黑客)解决方案可能会帮助任何来寻找答案的人

由于此问题,我们不得不停止使用getCurrentHeading,并将其替换为navigator.compass.watchHeading。在清除手表时,我们还调用navigator.compass.stop()函数以防止进一步的指南针垃圾邮件(仅适用于iPhone平台-Android是可以的),在再次调用watchHeading之前,我们调用navigator.compass.stop()和navigator.compass.start(),以“以防万一”重新初始化指南针(同样,仅适用于iPhone)


在采取这些措施后,用户指南针的页面不再挂在第二个条目上,并且在该页面之外没有标题垃圾邮件。

奇怪的是,似乎没有其他人遇到这种情况。在任何情况下,这个(黑客)解决方案可能会帮助任何来寻找答案的人

由于此问题,我们不得不停止使用getCurrentHeading,并将其替换为navigator.compass.watchHeading。在清除手表时,我们还调用navigator.compass.stop()函数以防止进一步的指南针垃圾邮件(仅适用于iPhone平台-Android是可以的),在再次调用watchHeading之前,我们调用navigator.compass.stop()和navigator.compass.start(),以“以防万一”重新初始化指南针(同样,仅适用于iPhone)

采取这些措施后,用户compass的页面不再挂在第二个条目上,并且在该页面之外也没有标题垃圾邮件