2013-08-27 13 views
6

Używam cordova 2.9.0 z Build PhoneGap. Napisałem aplikację, w której użytkownik może się zameldować w specjalnej lokalizacji do specjalnego czasu. Moim problemem jest to, że gdy instaluję aplikację na różnych urządzeniach, czasami uzyskuję zawsze czas (dotyczy to tylko urządzeń z Androidem). Po ponownym uruchomieniu urządzenia działa geolokalizacja i otrzymuję dane GPS. Teraz chciałbym wiedzieć, czy istnieje inny sposób rozwiązania tego problemu. Mój kod do geolokalizacji w funkcji deviceReady jest:PhoneGap Geolokalizacja jest zawsze timeout na specjalnych urządzeniach

var geo = cordova.require('cordova/plugin/geolocation'); 
var optionsGeo = {maximumAge: 0, timeout: 30000, enableHighAccuracy: false}; 
var watchID = geo.watchPosition(onSuccessGeo, errorGeo, optionsGeo); 

function onSuccessGeo(position) { 
    lat = (position.coords.latitude).toFixed(6); 
    lon = (position.coords.longitude).toFixed(6); 
    accuracy = (position.coords.accuracy).toFixed(0); 
    console.log("Lat " + lat + " Lon " + lon + " & " + accuracy + "m"); 
} 

function errorGeo(error) { 
    console.log("Geo-Fehler! Code: " + error.code + " Nachricht: " + error.message); 
} 

Próbowałem z różnymi timeoutvalues ​​iz włączoną HighAccuracy - ale nic nie pomaga. Dzięki.

+1

Mam ten sam problem, czy udało Ci się to rozwiązać? – Red2678

Odpowiedz

4

Miałem też do czynienia z tym problemem, głównie z urządzeniami z Androidem Samsung. Co dowiedziałem się, że:

  1. Jeśli nie masz karty SIM zainstalowanej w urządzeniu, wtedy nie będzie żadnych współrzędne GPS (to tylko w odniesieniu do niektórych urządzeń).

  2. Upewnij się, że w Twoim manifeście Android znajduje się <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />.

  3. Należy ustawić enableHighAccuracy:true patrz poniżej moich ustawień:

    var options = {maximumAge: 0, timeout: 10000, enableHighAccuracy:true}; navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

enableHighAccuracy stanowi wskazówkę, że aplikacja chciałby otrzymać jak najlepsze rezultaty. Domyślnie urządzenie podejmie próbę pobrania pozycji za pomocą metod opartych na sieci. Ustawienie tej właściwości na true powoduje, że framework wykorzystuje bardziej dokładne metody, takie jak pozycjonowanie satelitarne.

W niektórych przypadkach programiści używają geolocation.watchPosition, aby uzyskać dokładniejsze wyniki GPS. Czy możesz też spróbować?

Mam nadzieję, że to pomoże!

1

Wiem, że to pytanie jest stare, ale dziś napotkałem ten sam problem, używając Cordova 3.5.0 z pluginem geolokalizacji (org.apache.cordova.geolocation 0.3.8).

Rozwiązałem go, włączając tryb GPS "HighAccuracy" na urządzeniu (Android). (Ustawienia -> Dostęp do lokalizacji -> Tryb).
Użytkownik aplikacji otrzymuje podpowiedź, że musi włączyć tę opcję, aby móc korzystać z aplikacji ...

Powiązane problemy