我读了这么多帖子。 我找不到解决方案。 我需要的是更新我目前的位置。所以,如果我继续前进,我需要知道(每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');
}
结果是我只看到了所有信息的一次。然后停下来。 有人能帮助我吗?
答案 0 :(得分:1)
使用最新的Cordova(Phonegap),watchPosition在iOS上运行正常。也许你应该再试一次这个方法,因为看起来它正是你想要的。
答案 1 :(得分:1)
我有同样的问题,在IOS6上,无论是否使用网络应用程序,不会触发watchposition回调。看来IOS6打破了watchPosition。在开始它发射一次或两次,就是这样。一旦失败,手表或getposition的进一步调用不会触发成功或失败的回调。
我发现的工作是打开IOS 6中引入的地图应用程序,然后点击位置箭头找到自己。在尝试这个之后,回调会每隔一秒左右按预期启动。
此外,只要您在使用GPS接收器的地方以外,它似乎能保持良好运行状态。
我向苹果提交了错误。
我可以收集的是地图正在执行初始化例程以打开API ...
WatchPosition在IOS6之前一直运作良好。
答案 2 :(得分:0)
我认为问题在于您将值传递给setInterval而不是函数。你应该有更多这样的东西:
setInterval( function(){
navigator.geolocation.getCurrentPosition(onSuccess, onError);
},
5000);
正如你现在所做的那样,getCurrentPosition运行一次,将位置返回到setInterval函数...然后每隔5秒调用位置值(而不是getCurrentPosition 函数),这是毫无意义的。