2012-10-09 19 views
6

Wersja PhoneGap: 2.0.0. Poziom interfejsu API Androida 16 (wersja 4.0.3). przykładowy kod, który skłania błąd:PhoneGap. Nie można uruchomić usługi geolokalizacji

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);     
} 

Zawsze otrzymuję błąd w emulatorze Failed to start Geolocation service, kod błędu 2. Nawet jeśli wysłać Współrzędne GPS poprzez konsoli Android lub DDMS

Android uprawnienia manifeście:

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

Odpowiedz

6

Czy testowania tego tylko na emulatorze? Usługa geolokalizacji zawsze kończy się niepowodzeniem w moim emulatorze Androida, ale nie na prawdziwym urządzeniu.

EDIT: Spróbuj za pomocą następującego kodu

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

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

Mam prawdziwe urządzenie z wersją Androida 2.3, ale nie mam urządzenia z wersją 4.x. Więc testuję w emulatorze. Tak, w prawdziwym urządzeniu nie ma takiego błędu. Tylko w emulatorze. –

+0

Spróbuj dodać parametr eventListener. – jmpenetra

+0

@ JoãoPenetra Dodałem to do mojego kodu i otrzymałem go, aby nie zwracał żadnych błędów! Dziękuję za to! Ale ... teraz podwaja moje żądanie JSONP do Google Fusion Tables, które również używa tej lokalizacji. Czy możesz wymyślić jakikolwiek powód, dla którego miałby wykonywać dwa połączenia za pomocą 'enableHighAccuracy'? Bez tego tam, zwraca tylko 1 zestaw danych, ale najpierw zgłasza błąd. Oto plik: https://github.com/jamez14/TrailFinder/blob/master/TrailFinder/www/js/map.js – jamez14

6

Musisz ustawić opcję enableHighAccuracy do true gdy próbujesz uzyskać lokalizację.

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

Ponadto, aby określić współrzędne swojej pozycji w emulatorze,

Eclipse -> Open Perspective -> DDMS -> Emulator sterowania -> Lokalizacja Kontroluje

Określić współrzędne pozycji i naciśnij "Wyślij".

0

Próbuję rozwiązać ten problem przez kilka tygodni. Przeszukuję sieć i wygląda na to, że większość ludzi ma tę kwestię dotyczącą phonegapa za każdym razem, gdy rozwija się dla Androida. Rozwiązaniem było przetestowanie mojego kodu na urządzeniu z GPRS. Upewnij się również, że przed uruchomieniem Twojego kodu GPRS i wifi jest włączone. Unikaj używania emulatora do testowania GPRS, ponieważ brakuje wielu funkcji i błędów.

Powiązane problemy