2012-11-06 2 views
5

Piattaforma: iOS6/OSx Lion.Phonegap, Cordova successo in caso di accensione ogni 1 secondo

Sto cercando di scoprire come funziona Phonegap/Cordova con navigator.geolocation.watchPosition.

I documenti dicono che l'opzione "maximumAge" è quella che chiede al sistema di recuperare la posizione.

Così, con queste opzioni:

{ maximumAge: 3000, timeout: 5000, enableHighAccuracy: true } 

ho espect la richiesta di posizione sarà licenziato ogni 3 secondi?

E non importa quello maximumAge ho messo il successo viene sparato ogni 1 secondo ...

Chiunque può spiegare per favore?

Grazie Bye
Rob

+0

stesso numero qui. Cordova 2.2 e iOS 5.1/iOS6. iOS scatta ogni secondo, Android sembra farlo ogni 30, ma non è abbastanza affidabile. – scald

+0

Ciao nickhar, quindi non funziona anche in Android? È davvero strano che stavo pensando che sto usando i paramter sbagliati, nelle versioni precedenti di Cordova/Phonegapp c'era un parametro di "frequenza". Grazie Ciao Rob – oudoken

risposta

5

Attualmente sto lavorando a questo problema utilizzando getCurrentPosition con un setInterval. Non sono sicuro di quali potrebbero essere le conseguenze, ma questo sembra darmi il massimo controllo e sembra essere il metodo più coerente su tutte le piattaforme.

// call this once 
setupWatch(3000); 

// sets up the interval at the specified frequency 
function setupWatch(freq) { 
    // global var here so it can be cleared on logout (or whenever). 
    activeWatch = setInterval(watchLocation, freq); 
} 

// this is what gets called on the interval. 
function watchLocation() { 
    var gcp = navigator.geolocation.getCurrentPosition(
      updateUserLoc, onLocationError, { 
       enableHighAccuracy: true 
      }); 


    // console.log(gcp); 

} 

// do something with the results 

function updateUserLoc(position) { 


var location = { 
    lat : position.coords.latitude, 
    lng : position.coords.longitude 
}; 

console.log(location.lat); 
console.log(location.lng); 
} 

// stop watching 

function logout() { 
    clearInterval(activeWatch); 
} 
+0

Ciao Scald, Grazie per la risposta. Sembra infatti che la funzione watchPosition sia solo una chiamata (con timer) a getCurrentPosition (ho cercato all'interno di cordova.js). Btw Il tuo codice è molto utile! Quando interrompi il timer con "clearInterval (activeWatch)", si ferma anche "watchPosition"? Voglio dire se chiamate più volte "setupWatch" forse ci saranno molti timer con "watchPosition" ?? Grazie mille Ciao Rob – oudoken

+0

Rob-- non c'è una watchPosition in uso nel mio codice. Capisco che da qualche parte sotto la superficie cordova potrebbe fare qualcosa di simile, ma per me sta funzionando molto meglio della loro chiamata a 'watchPosition'. Sì, la chiamata 'clearInterval' interrompe' watchLocation' e cancella quel timer in modo che le successive chiamate a 'setupWatch' possano creare un nuovo timer. – scald

+0

Ciao Scald, grazie proverò il tuo codice sono abbastanza sicuro che è il cordova.js ha alcuni problemi con iOS. Molte grazie! Ciao Rob – oudoken