2012-10-09 18 views
6

Versione PhoneGap: 2.0.0. API Android livello 16 (versione 4.0.3). Esempio di codice che spinge un errore:PhoneGap. Impossibile avviare il servizio di geolocalizzazione

navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy:true}); 

function onSuccess(position) { 
    console.log('latitude: '+ position.coords.latitude); 
    console.log('longitude: '+ position.coords.longitude);     
} 

function onError(error) { 
    console.log('Appeared error : '+ error.message);     
} 

ottenendo sempre un errore di emulatore Failed to start Geolocation service, il codice di errore 2. Anche se inviare le coordinate GPS attraverso console Android o DDMS

permessi manifestano Android:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

risposta

6

Stai prove sul solo l'emulatore? Il servizio di geolocalizzazione fallisce sempre nel mio emulatore Android ma non su un dispositivo reale.

EDIT: Si prega di provare a utilizzare il seguente codice

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() { 
    navigator.geolocation.getCurrentPosition(myPositionSuccess, myPositionError, {maximumAge: 300000, timeout:10000, enableHighAccuracy : true}); 
}; 
+0

Ho un dispositivo reale con versione Android 2.3, ma non ho un dispositivo con versione 4.x. Quindi sto testando in emulatore. Sì, nel dispositivo reale non esiste tale errore. Solo in emulatore. –

+0

Prova ad aggiungere quell'eventoListener. – jmpenetra

+0

@ JoãoPenetra Ho aggiunto questo al mio codice e l'ho ottenuto per non restituire alcun errore! Grazie per quello! Ma ... ora raddoppia la mia richiesta JSONP su Google Fusion Tables che utilizza anche la posizione. Riesci a pensare a un motivo per cui farebbe due chiamate usando 'enableHighAccuracy'? Senza quello lì dentro, restituisce solo 1 set di dati ma genera prima un errore. Ecco il file: https://github.com/jamez14/TrailFinder/blob/master/TrailFinder/www/js/map.js – jamez14

6

è necessario impostare l'opzione enableHighAccuracy per true mentre si sta cercando di ottenere la posizione.

navigator.geolocation.getCurrentPosition(onSuccess, onError,{enableHighAccuracy:true}); 

Inoltre, per specificare le coordinate della vostra posizione nell'emulatore,

Eclipse -> prospettiva aperta -> DDMS -> emulatore di controllo -> Localizzazione Controlli

Specificare il coordinate della posizione e premere "Invia".

0

Ho provato a risolvere questo problema per settimane. Cerco la rete e sembra che la maggior parte delle persone sta avendo questo problema per quanto riguarda PhoneGap ogni volta che si stanno sviluppando per Android. La soluzione era testare il mio codice su un dispositivo dotato di GPRS. Assicurati inoltre che prima di eseguire il tuo codice, il tuo GPRS e il Wi-Fi siano abilitati. Evita di usare l'emulatore per testare GPRS perché ci sono molte funzionalità mancanti e bug.

Problemi correlati