2013-08-27 14 views
6

Ich benutze Cordova 2.9.0 mit PhoneGap Build. Ich habe eine App geschrieben, wo ein Benutzer zu einem bestimmten Zeitpunkt an einem bestimmten Ort einchecken kann. Mein Problem ist, dass wenn ich de App auf verschiedenen Geräten installiere ich manchmal immer ein Timout (das tritt nur auf Android-Geräten). Wenn ich das Gerät neu starte, funktioniert die Geolocation und ich bekomme die GPS-Daten. Jetzt würde ich gerne wissen, ob es eine andere Möglichkeit gibt, dieses Problem zu lösen. Mein Code für die Lokalisierung in der deviceReady Funktion ist:PhoneGap Geolocation bekomme immer ein Timeout auf speziellen Geräten

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

ich mit verschiedenen timeoutvalues ​​versucht habe und ist mit hohen Genauigkeit - aber nichts hilft. Danke.

+1

Ich habe das gleiche Problem, hast du das gelöst? – Red2678

Antwort

4

Ich war auch dieses Problem konfrontiert, vor allem mit Samsung Android-Geräten. Was habe ich herausgefunden, dass:

  1. Wenn Sie keine SIM-Karte im Gerät installiert haben, dann wird es keine GPS-Koordinaten sein (das ist nur für einige Geräte).

  2. Bitte stellen Sie sicher, dass Sie <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> in Ihrem Android-Manifest festgelegt haben.

  3. sollten Sie setzen enableHighAccuracy:true bitte unter meine Einstellungen sehen:

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

enableHighAccuracy liefert einen Hinweis, dass die Anwendung möchte die bestmöglichen Ergebnisse erhalten. Standardmäßig versucht das Gerät, mithilfe von netzwerkbasierten Methoden eine Position abzurufen. Wenn Sie diese Eigenschaft auf "true" festlegen, wird das Framework angewiesen, genauere Methoden zu verwenden, z. B. die Satellitenpositionierung. In einigen Fällen verwenden Entwickler geolocation.watchPosition, um genauere GPS-Ergebnisse zu erhalten. Kannst du das auch versuchen?

Ich hoffe, es hilft!

1

Ich weiß, diese Frage ist alt, aber ich begegnete das gleiche Problem heute mit Cordova 3.5.0 mit der Geolocation-Plugin (org.apache.cordova.geolocation 0.3.8).

I gelöst es von dem GPS „hohen Genauigkeit“ -Modus auf dem Gerät ermöglicht (android). (Einstellungen -> Standortzugriff -> Modus).
Der App-Benutzer bekommt einen Hinweis, dass er diese Option aktivieren muss, um die App zu verwenden ...

Verwandte Themen