2012-05-02 4 views
0

Я читал так много сообщений об этом. Я не нашел решение. Мне нужно обновить текущую позицию. Поэтому, если я продолжу двигаться, мне нужно знать (каждые 5 секунд) мою новую позицию. Я понимаю, что watchPosition не работает с IOS.Phonegap getCurrentPosition и watchPosition

я начинаю с официального примера, и я смешаться с 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'); 
     } 

Результатом является то, что я вижу только один раз всю информацию. И затем остановился. Может кто-нибудь мне помочь?

ответ

1

watchPosition работает отлично для меня на iOS с использованием последней Кордовы (Phonegap). Может быть, вы должны дать этому методу еще одну попытку, поскольку кажется, что это именно то, что вы хотите.

+0

Возможно, @ user1301094 был смущен, потому что он не работает в симуляторе. –

+0

Нет, я использую его в своем iPad, а не в симуляторе! Возможно ли, что причина в том, что я использую Phongeap 1.2.0? – Corallino

+0

Может быть. У меня также были проблемы (GPS не выключился), используя более раннюю версию Phonegap. Он волшебным образом исчез, когда я обновился до первой версии Кордовы. – jenswirf

1

У меня такая же проблема, обратные вызовы watchposition не срабатывают независимо от веб-приложения или нет на IOS6. Похоже, IOS6 нарушил watchPosition. он запускается один или два раза, и все. после того, как не удалось выполнить дальнейшие вызовы часов или getposition, не срабатывают обратные вызовы с успехом или сбоями.

Работа, которую я нахожу, - это открыть приложение карт, которое было введено в IOS 6, и нажать стрелку местоположения, чтобы найти себя. после попытки этого обратные вызовы срабатывают, как ожидается, каждую секунду или около того.

Кроме того, он работает хорошо, пока вы находитесь снаружи, где используется приемник GPS.

Я отправил в качестве ошибки в яблоко.

Все, что я могу собрать это карта выполняет подпрограмму инициализации, чтобы открыть API ...

WatchPosition не работал отлично до iOS6.

0

Я считаю, что проблема заключается в том, что вы передаете значение в setInterval вместо функции. Вы должны иметь нечто большее, как это:

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

Как вы уже сейчас, getCurrentPosition выполняется один раз, возвращает позицию в setInterval функции ... а затем значение позиции вызывается каждые 5 секунд (а не getCurrentPosition функция), что довольно бессмысленно.

Смежные вопросы