Seit Firefox 3.5, Opera 10.60 bzw. Safari/Webkit 5 ist es möglich per JavaScript mit Einverständniss des Benutzers seine Position zu ermitteln. Die Position wird dann entweder über eine angeschlossene GPS-Antenne oder über die verfügbaren WLans ermittelt. Die API dafür ist sehr leicht zu benutzen.
Zunächst sollte geprüft werden ob der benutzte Browser Geolocation unterstützt. Das geht wie folgt:
if (!navigator.geolocation) { alert('Sorry, dein Browser unterstützt keine Geolocation-API'); }
Jetzt ist es möglich die aktuelle Position abzufragen:
navigator.geolocation.getCurrentPosition(function(position) { alert('Deine aktuelle Position ist: Lat: ' + position.coords.latitude + ' Long: ' + position.coords.longitude); }, function(error) { alert('Fehler beim finden der Position. Fehler: ' + error.message); });
und bei jeder Änderung der Position erneut ein Event auszulösen:
var = locationHandler = navigator.geolocation.watchPosition(function(position) { alert('Deine neue Position ist: Lat: ' + position.coords.latitude + ' Long: ' + position.coords.longitude); }, function (e) {}, {enableHighAccuracy:true, maximumAge:120 * 1000, timeout:27000});
Hierbei kann man angeben
- enableHighAccuray: ob man auf hohe Genauigkeit setzen möchte (sofern diese vom Gerät unterstützt wird)
- maximumAge: (in ms) wie alt die letzte Position maximal sein darf – je kleiner dieser Wert, desto öfterst wird auf dem Gerät die aktuelle Position abgefragt.
- timeout: (in ms) wann die Positionsbestimmung abgebrochen werden soll wenn sie nicht erfolgreich ist
Wenn man die Positionsüberwachung wieder abbrechen will, hilft folgender API-Call weiter:
navigator.geolocation.clearWatch(locationHandler);
Sehr nützlich, vorallem wenn man eine Webseite für Smartphones bastelt 😉