Standort im Browser ermitteln per HTML5 Geolocation API

Alle Browser, die nicht mehr aus der digitalen Steinzeit stammen (Internet Explorer 9, Firefox 3.5 und Google Chrome), sind in der Lage, über die offiziell von der W3C zur Verfügung gestellte Geolocation API eine Angabe dazu zu machen, an welchem Standort sich der User befindet.

Wie wird der Standort per Geolocation API ermittelt?

Die Standortermittlung per HTML5 ist relativ komplex und ausgereift und durchläuft eine Reihe von Schritten zur Ermittlung mit aufsteigender Genauigkeit:

  1. IP-Adresse
  2. WLAN-Netzwerke
  3. Funk-Signale (Mobilfunk)
  4. GPS-Sender (nur bei ‚enableHighAccuracy‘)

Sehr genau klappt die Ermittlung des Standortes, wenn der User in seinem Endgerät über ein GPS Sender verfügt. Das ist natürlich bei stationären PCs praktisch nie der Fall; jedoch verfügt jedes gängige Smartphone heutzutage über ein GPS Modul und kann damit – auch an den Browser – eine exakte Positionsbestimmung liefern. Auch Informationen aus dem WLAN und dem Mobilfunk werden herangezogen, falls keine GPS Daten vorliegen. Erst im schlimmsten Falle greift der Browser auf die IP Adresse zu, die jedoch aufgrund der Nutzung von Einwahlknoten eine Ungenauigkeit von 50-100km haben kann.

Aktuellen Standort bestimmen mit getCurrentPosition()

Um die Positionsbestimmung anzustoßen, genügt der Zugriff auf das Navigator-Object (window.navigator):


navigator.geolocation.getCurrentPosition(function(position){
// wenn Position ermittelt werden konnte, liefert
//'position.coords.latitude' und 'position.coords.longitude'
//die entsprechenden Längen- und Breitengrade
}, function () {
// der zweite Funktionsteil wird ausgeführt, wenn keine
//Positionsermittlung stattfinden konnte
}

Das „position“ Objekt verfügt dabei über die folgenden Eigenschaften:

Eigenschaften des „Position“ Objects
Property Typ Info
coords.latitude double Grad
coords.longitude double Grad
coords.altitude double or null Meter
coords.accuracy double Meter
coords.altitudeAccuracy double or null Meter
coords.heading double or null Grad im Uhrzeigersinn von Norden
coords.speed double or null Meter/Sek.

 

Beispiel zur Standortbestimmung mit der HTML5 Geolocation

Bei Laden dieser Seite sind Sie bereits vom Browser gefragt worden, ob Sie die Standortermittlung durch selfhtml5 zulassen möchten. Dieser Dialog ist browserabhängig und sieht (derzeit) in FireFox z.B. so aus:

stanort-ermittlung-geolocation-html5-zustimmung

Je nach dem, ob Sie die Zustimmung zur Standortbestimmung erteilt haben oder nicht, erscheint in der folgenden Box nun Ihre Position oder ein Fehlerhinweis.

Ihre vom Browser ermittelten Positionsdaten

lat
lon
altitude
accuracy

 

Und hier der Code zum Geolocation-Beispiel


navigator.geolocation.getCurrentPosition(
function(position){
// wenn Positionsbestimmung geklappt hat:
document.getElementById('tdlat').innerHTML = position.coords.latitude;
document.getElementById('tdlon').innerHTML = position.coords.longitude;
document.getElementById('tdalt').innerHTML = position.coords.altitude+'m';
document.getElementById('tdacc').innerHTML = position.coords.accuracy+'m';
},
function(){
// wenn Positionsbestimmung einen Fehler erzeugt hat (z.B. weil Sie vom User ablehnt wurde).
document.getElementById('beispiel').innerHTML ='Die Position konnte nicht ermittelt werden';
}
)

 

Wie genau ist die Positionsbestimmung per Geolocation?

Wie wir gesehen haben, ist die Standortermittlung dank Geolocation-API kinderleicht. Etwas spannender wird es, wenn wir höhere Ansprüche an die Genauigkeit der Messdaten haben.

Wie in der Tabelle oben ersichtlich, liefert das Position-Objekt bereits eine Genauigkeit mit, die „accuracy“ in Metern, die die maximal mögliche Abweichung beziffern soll. Die Ergebnisse dieses Attributs können je nach verwendetem Endgerät sehr unterschiedlich ausfallen. Wichtig ist in diesem Zusammenhang auch, ob die Geolocation ausdrücklich mit hoher Genauigkeit (enableHighAccuracy) ermittelt werden soll wie im nächsten Kapitel geschildert.

Nachfolgend typische Genauigkeiten der Standortbestimmung per Geolocation:

Gerätetyp Genauigkeit
PC 2.000-140.000m
Smartphone ohne GPS 20-80m
Smartphone mit GPS 5-20m (mit enableHighAccuracy)

Standortbestimmung mit hoher Genauigkeit durch „enableHighAccuracy“

Wenn man einen sehr genauen Standort ermitteln möchte, benötigt man dafür nach derzeitigem Stand der Technik noch immer GPS. Die nützlichen Chips sind mittlerweile in allen modernen Smartphones verbaut und daher grundsätzliche eine hervorragende Wahl für die Standortbestimmung, wenn es da nicht einige Einschränkungen zu beachten gäbe:

  • GPS Tracking ist energieintensiv und verkürzt die Akkulaufzeit erheblich
  • Die Standortbestimmung über GPS benötigt eine Initialitsierungsphase von bis zu 15 Minuten, wenn die letzte GPS-Verwendung lange her ist, bevor Ergebnisse zur Verfügung stehen. Im gängigen Smartphone-Alltag sind jedoch häufig relativ aktuelle Satellitendaten verfügbar und die Messung dauert üblicher Weise zwischen 10 und 30 Sekunden.
  • Der User muss ggf. der exakten Standortbestimmung ein weiters Mal zustimmen, da es sowol in Browsern, als auch iOS und Android dafür separate Rechte gibt

Wenn trotz dieser Einschränkungen die Standortbestimmung über GPS sinnvoll oder notwendig ist, kann die Verwendung der GPS Module durch die Übergabe des Parameters enableHighAccuracy aktiviert werden:


navigator.geolocation.getCurrentPosition(function(position){
successFunction(position),
errorFunction(),
{
timeout: 0,
enableHighAccuracy: true,
maximumAge: Infinity
}
});

Probleme bei der HTML5 Standortermittlung per Geolocation

Die W3C schreibt vor, dass die Standortermittlung nur nach ausdrücklicher Zustimmung des Users erfolgen darf. Die Browseranbieter haben das entsprechend umgesetzt – das bedeutet, dass je nach Browser eine Warnmeldung aufpopt oder sich unter der Adresszeile (mitunter schwer sichtbar) einschiebt und den User fragt, ober er die Standortdaten ermittelt haben möchte.In der Praxisanwendung sollte man als Entwickler daher darauf achten, an der geeigneten Stelle auch selbst darauf hinzuweisen, dass der Service nur nach Akzeptierung der Standortübermittlung funktioniert.

Dieser Beitrag wurde unter HTML5 veröffentlicht. Setze ein Lesezeichen auf den Permalink.

2 Antworten auf Standort im Browser ermitteln per HTML5 Geolocation API

  1. DLKE sagt:

    Mir ist nicht klar, warum in dem gezeigten Beispiel, die Standortdaten bspw. an selfhtml5.org uebermittelt werden sollen und daher eine Zustimmung erforderlich ist und an welcher Stelle mit welchem code dieses Zustimmfenster generiert wird.
    Es muss doch moeglich sein in einer von mir erstellten und auf meinem Rechner gestarteten HTML-Seite einfach mit o.g. code meine Standorddaten abzufragen und anzeigen zu lassen.

    • html5-admin sagt:

      Das Fenster zum Zustimmen zur Übermittlung der Standortdaten kommt nicht von der Website, sondern ist ein Browserfeature, dass in allen Browsern integriert ist. Man will ja nicht unbedingt ungefragt mit jeder Website, die man besucht, seinen Standort teilen, oder?

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *