tas2580
Blog über Webentwicklung

Standort per JavaScript abfragen

tas2580  

Eine schöne neue Funktion von HTML5 ist es das man per JavaScript API ziemlich exakt den Standort eines Besuchers abfragen und auslesen kann. Das funktioniert in praktisch allen aktuellen Browsern die ich getestet habe und kann so heute schon gut verwendet werden. Damit lassen sich dann in Kombination mit Google Maps sicher nette Dinge umsetzen.


Eine genaue Beschreibung der API findet man in der offiziellen W3C Spezifikationen, ich will hier kurz zusammenfassen wie das funktioniert. Der Browser hat mehrere Möglichkeiten die Position zu bestimmen, dazu gehören:

  • IP-Adresse
  • WLAN-Netzwerke
  • GPS-Sender
  • Funk-Signale im Handynetz
  • Vom Benutzer angegebener Standort

Wie man sieht hat ein Smartphone oder Tablet mehr Möglichkeiten wie ein herkömmlicher PC, jeh nach dem welche Methode verwendet wird ist der Standort unter Umständen recht ungenau. Beim PC zuhause gibt es wohl in den wenigsten Fällen einen GPS Empfänger so das dort auf die IP-Adresse oder die Angabe des Benutzers zurückgegriffen werden muss. Auf einem mobilen Gerät mit GPS Empfänger kann der Standort auf wenige Meter genau ermittelt werden.

Aus Datenschutztechnischen Gründen fragt der Browser beim Benutzer nach ob die Webseite auf den Standort zugreifen darf. Da das vollautomatisch vom Browser gemacht wird muss man sich als Webseiten Betreiber nicht weiter darum kümmern. Es ist also nicht möglich heimlich die Positionen seiner Besucher zu ermitteln, wobei einige Browser speichern wenn ein Benutzer einmal zugestimmt hat und fragen dann nicht bei jedem Besuch erneut nach.

Ein kleines Beispiel

Hier will ich kurz zeigen wie das ganze aussieht. Ermittelt werden hier Längen und Breitengrad, um diese einer Stadt zuzuordnen benötigt man eine extra Datenbank. Es können auch weitere Daten wie Höhe oder Geschwindigkeit ausgelesen werden, in dem Bespiel zeige ich aber nur die Position an da alle weiteren Werte in meinen Tests nur in sehr wenigen Browsern ausgelesen werden konnten.

In dem Beispiel hier wird bis der Besucher dem auslesen seines Standorts zugestimmt hat "Daten werden ermittelt..." angezeigt. Danach wird der Text durch Längen und Breitengrad ausgetauscht.

Beispiel:

Daten werden ermittelt...

Der Code Dazu sieht folgendermaßen aus:

<p id="pos">Daten werden ermittelt...</p>
<script>
navigator.geolocation.getCurrentPosition(function(position){ 
    document.getElementById('pos').innerHTML = 'Lat: '+position.coords.latitude+' - Long: '+position.coords.longitude+ ' <a href="https://www.google.de/maps/place//@'+position.coords.latitude+','+position.coords.longitude+ ',16z/">Auf Google Maps anzeigen</a>';
});
</script>

Hier noch eine komplette Liste aller Werte die theoretisch ausgelesen werden können. Ein Teil davon macht allerdings nur auf mobilen Geräten Sinn da ein stationärer PC eher keine Angaben zu seiner Geschwindigkeit bereitstellen wird.

  • position.coords.latitude - Längengrad
  • position.coords.longitude - Breitengrad
  • position.coords.accuracy - Positionsgenauigkeit
  • position.coords.altitude - Höhe
  • position.coords.altitudeAccuracy - Höhengenauigkeit
  • position.coords.speed - Geschwindigkeit
  • position.coords.heading - Himmelsrichtung

Da die Daten per JavaScript ausgelesen werden sind sie erst mal nur im Browser verfügbar und müssen per AJAX oder Formular an den Server gesendet werden wenn man sie speichern oder per PHP weiterverarbeiten möchte.


Kommentare

Gibt es eine Möglichkeit den Standort abzufragen ohne das der Browser um Erlaubnis fragt?

Ich kenne keine.

Frage: Hat vielleicht jemand ein Script mit dem die Daten in die Cookies gesendet werden? Vielen Dank


Bitte warten ...

Kommentar schreiben

URLs werden automatisch umgewandelt.
[b]DEIN TEXT[/b] für Fett gedruckt
[quote]DEIN ZITAT[/quote] für Zitate
[code]DEIN CODE[/code] für Code
captcha