Hallo zusammen,
zuletzt war ich eher im vb.net Bereich unterwegs, aber jetzt zieht es mich doch eher in den Webbereich :-)
Ich habe das Problem, dass bei Aufruf von navigator.geolocation.getCurrentPosition im Callback veraltete (gecachte?) Werte zurückgegeben werden. Das heißt sowohl die Rückgabewerte position.coords, als auch position.timestamp sich nicht ändern. Auch die position.coords.accuracy ist sehr hoch. Nutze ich jedoch navigator.geolocation.watchPosition, dann ändern sich die Werte, der Timestamp ist immer aktuell und die Genauigkeit ist sehr hoch (4).
Allerdings möchte ich navigator.geolocation.watchPosition nicht verwenden, da dadurch meine Funktionen sehr häufig aufgerufen werden und somit auch ein intensiver Akkuverbrauch gemacht wird.
Ich habe übrigens auch bereits probiert, navigator.geolocation.watchPosition mit anschließenden ".clearWatch" in einer Schleife mit Abstand von 5 Sekunden zu machen. Aber dann ist es wie bei navigator.geolocation.getCurrentPosition und die Rückgabewerte verändern sich nicht mehr.
Seit Tagen versuche ich bereits das Problem zu lösen, aber ich komme nicht drauf was die Ursache ist.
Das Problem tritt auf mehreren Android Smartphones auf.
Anbei der vereinfachte Code:
zuletzt war ich eher im vb.net Bereich unterwegs, aber jetzt zieht es mich doch eher in den Webbereich :-)
Ich habe das Problem, dass bei Aufruf von navigator.geolocation.getCurrentPosition im Callback veraltete (gecachte?) Werte zurückgegeben werden. Das heißt sowohl die Rückgabewerte position.coords, als auch position.timestamp sich nicht ändern. Auch die position.coords.accuracy ist sehr hoch. Nutze ich jedoch navigator.geolocation.watchPosition, dann ändern sich die Werte, der Timestamp ist immer aktuell und die Genauigkeit ist sehr hoch (4).
Allerdings möchte ich navigator.geolocation.watchPosition nicht verwenden, da dadurch meine Funktionen sehr häufig aufgerufen werden und somit auch ein intensiver Akkuverbrauch gemacht wird.
Ich habe übrigens auch bereits probiert, navigator.geolocation.watchPosition mit anschließenden ".clearWatch" in einer Schleife mit Abstand von 5 Sekunden zu machen. Aber dann ist es wie bei navigator.geolocation.getCurrentPosition und die Rückgabewerte verändern sich nicht mehr.
Seit Tagen versuche ich bereits das Problem zu lösen, aber ich komme nicht drauf was die Ursache ist.
Das Problem tritt auf mehreren Android Smartphones auf.
Anbei der vereinfachte Code:
Code:
function showPosition() { if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var positionInfo = "Your current position is (" + "Latitude: " + position.coords.latitude + ", " + "Longitude: " + position.coords.longitude + ")"; document.getElementById("result").innerHTML = positionInfo; }, function(error){}, {enableHighAccuracy: true, maximumAge: 4500, timeout : 20000}); } else { alert("Sorry, your browser does not support HTML5 geolocation."); } }
Comment