0

我读了很多关于这个的帖子。我没有找到解决办法。我需要的是更新我当前的位置。所以如果我要继续前进,我需要知道(每 5 秒)我的新位置。我了解 watchPosition 不适用于 IOS。

我从官方示例开始,我与 setInterval 混合

// Wait for PhoneGap to load
        //
        document.addEventListener("deviceready", onDeviceReady, false);

        // PhoneGap is ready
        //
        function onDeviceReady() {
            setInterval(navigator.geolocation.getCurrentPosition(onSuccess, onError),5000);
        }

        // onSuccess Geolocation
        //
        function onSuccess(position) {
            alert("ENTRY");
            var element = document.getElementById('geolocation');
            element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' +
            'Longitude: '          + position.coords.longitude             + '<br />' +
            'Altitude: '           + position.coords.altitude              + '<br />' +
            'Accuracy: '           + position.coords.accuracy              + '<br />' +
            'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
            'Heading: '            + position.coords.heading               + '<br />' +
            'Speed: '              + position.coords.speed                 + '<br />' +
            'Timestamp: '          + new Date(position.timestamp)          + '<br />';
        }

        // onError Callback receives a PositionError object
        //
        function onError(error) {
            alert('code: '    + error.code    + '\n' +
                  'message: ' + error.message + '\n');
        }

结果是我只看到所有信息的一次。然后停下来。有人可以帮助我吗?

4

3 回答 3

2

我有同样的问题,无论网络应用程序是否在 IOS6 上,监视位置回调都不会触发。看来 IOS6 已经破坏了 watchPosition。开始时它会触发一次或两次,仅此而已。一旦进一步调用 watch 或 getposition 失败,就不会触发成功或失败回调。

我正在寻找的解决方法是打开 IOS 6 中引入的地图应用程序,然后点击位置箭头来找到自己。尝试此操作后,回调会按预期每隔一秒左右触发一次。

此外,只要您不在使用 GPS 接收器的地方,它似乎就可以保持良好运行。

我作为错误提交给苹果。

我所能收集到的只是地图正在执行一个初始化例程以打开 API ......

WatchPosition 在 IOS6 之前一直运行良好。

于 2012-09-23T16:20:53.947 回答
2

watchPosition 在 iOS 上使用最新的 Cordova (Phonegap) 对我来说很好用。也许您应该再试一次该方法,因为它似乎正是您想要的。

于 2012-05-02T11:28:06.530 回答
0

我认为问题在于您将value传递给 setInterval 而不是function。你应该有更多这样的东西:

setInterval( function(){
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
},
5000);

正如您现在所拥有的,getCurrentPosition 运行一次,将位置返回给 setInterval 函数......然后每 5 秒调用一次位置(不是 getCurrentPosition函数),这毫无意义。

于 2012-10-10T14:11:45.063 回答