Bei der Positionsbestimmung (auch Ortsbestimmung, Standortbestimmung oder Lokalisierung) wird die aktuelle geografische Position des Anwenders auf der Erdoberfläche ermittelt. Dabei wird die Position des Anwenders im Verhältnis zu einem definiertem Bezugssystem ermittelt.
Bei der Positionsbestimmung ist das Bezugssystem das Gradnetz der Erde, das ein gedachtes Koordinatensystem auf der Erdoberfläche ist, das aus sich rechtwinklig schneidenden Längen- und Breitenkreisen besteht. Die Längenkreise verlaufen parallel zum Äquator und die Breitenkreise von Pol zu Pol. Die Längen- und Breitenkreise werden in Grad eingeteilt und dann als Längen- und Breitengrade bezeichnet. Die Breitengrade beginnen bei Null am Äquator und werden in Richtung Nordpol und Südpol jeweils bis 90° hochgezählt. Die Längengrade beginnen beim willkürlich festgelegten Nullmeridian (Position des Greenwich-Observatoriums in London) und wird nach Westen und Osten bis jeweils 180° hochgezählt:
Zur Bestimmung der aktuellen Position auf dem Gradnetz der Erde gibt es verschiedene Möglichkeiten. Das genaueste Verfahren ist GPS (Global Positioning System), das z. B. von Navigationssystemen verwendet wird. Für Geräte, die keinen GPS-Empfänger integriert haben, gibt es auch die Möglichkeit die Position mit Hilfe von Funksignalen, WLAN oder der IP-Adresse zu ermitteln.
Das GPS (Global Positioning System) ist ein globales Satellitensystem zur Positionsbestimmung und Navigation, das 1970 vom US-Verteidigungsministerium entwickelt wurde. Das System besteht aus ca. 24 Satelliten, die permanent die Erde umkreisen und mit codierten Radiosignalen ihre aktuelle Position und die genaue Uhrzeit ausstrahlen. Das Netz aus Satelliten ist dabei so ausgelegt, dass die GPS-Empfänger auf der Erde die Signale von mindestens vier Satelliten empfangen können. Aus der Signallaufzeit von drei der empfangenen Satellitensignalen kann der Empfänger dann seine genaue Position und Höhe errechnen. Das Signal des vierten Satelliten wird verwendet, um die Laufzeiten der Signale korrekt zu messen. Außerdem kann mit Hilfe der GPS-Signale auch die Geschwindigkeit und die Bewegungsrichtung des Empfängers bestimmen.
Zur Positionsbestimmung können auch die Funksignale der Sendemasten des Mobilfunks verwendet werden. Mobilfunkgeräte sind fast immer gleichzeitig mit mehreren Sendemasten verbunden, um ein stabiles Signal zu gewährleisten und einen Zellwechsel während einer laufenden Verbindung zu ermöglichen. Bei der Verbindung zu mindestens drei Sendemasten, kann ein Mobilfunkgerät aus den empfangenen Signalen die aktuelle Position per Triangulation ermitteln. Die Positionsbestimmung über Mobilfunksignale ist jedoch ungenauer als die Positionsbestimmung über GPS, da die Mobilfunksignale größere Toleranzen aufweisen sowie die Topografie des Mobilfunknetzes, die unterschiedlichen geografischen Gegebenheiten und die Ausstattung des Mobilfunkgeräts das Ergebnis stark beeinflussen.
Die WLAN-basierte Positionsbestimmung ermöglicht die Ermittelung der Position mit WLAN-fähigen Endgeräten unabhängig von GPS oder Funksignalen. Das Verfahren funktioniert ähnlich der Positionsbestimmung mit GPS, nur das hier statt Satellitensignale WLAN-Signale verwendet werden. Dabei werden die WLAN-Signale kommerzieller Hotspots verwendet, deren Standort bekannt ist. Meist werden dann die Signalstärken zur Bestimmung des Abstands zu einem Hotspot herangezogen und durch Trilateration (Entfernungsmessung zu drei Punkten) der genaue Standort bestimmt.
Die Positionsbestimmung über IP-Adressen wird auch als Geotargeting bezeichnet und ordnet IP-Adressen ihrer geografischen Herkunft zu. IP-Adressen können zwar nicht unmittelbar einem Benutzer zugeordnet werden, aber immer einem Besitzer. Dabei handelt es sich meistens um Internetanbieter, Unternehmen oder Bildungseinrichtungen, die ganze IP-Adressräume verwalten. Die Besitzer von IP-Adressen geben dann i. d. R. legitime örtliche Adressen zu ihren IP-Adressen an. So kann dann über die IP-Adresse auf die Position des Anwenders geschlossen werden.
Mit der Eigenschaft „geolocation“ des „navigator“-Objekts wird ein Objekt zurückgegeben, mit dem die geografische Position des Anwenders ermittelt werden kann. Mit der Abfrage „if (navigator.geolocation)“ kann ermittelt werden, ob der Browser die Positionsbestimmung unterstützt:
HTML-Datei:
Ergebnis:
Status:
Die Methode „getCurrentPosition()“ des „geolocation“-Objekts wird verwendet, um die Positionsangaben des Anwenders zu ermitteln. Dabei wird der Methode eine sog. Callback-Methode übergeben, die aufgerufen wird, wenn die Positionsermittelung erfolgreich verlaufen ist. Die Callback-Methode muss dabei einen Parameter haben, dem das Objekt mit den Positionsangaben übergeben wird. Dieses Objekt enthält wiederum das Objekt „coords“, welches dann u. a. die Eigenschaften „latitude“ für den Breitengrad, „longitude“ für den Längengrad und „altitude“ für die Höhe (über Meeresspiegel) hat:
HTML-Datei:
Ergebnis:
Latitude (Breitengrad): | |
Longitude (Längengrad): | |
Altitude (Höhe): | |
Status: |
Hinweis: Die Höhe kann nur ermittelt werden, wenn zur Positionsbestimmung GPS verwendet wird!
Die Genauigkeit von Breitengrad und Längengrad kann über der Eigenschaft „accuracy“ des „coords“-Objekts ermittelt werden. Die Toleranz wird dabei als Radius in Metern angegeben und bedeutet, dass sich die genaue Position irgendwo innerhalb dieses Kreises befindet. Die Genauigkeit der Höhe kann mit der Eigenschaft „altitudeAccuracy“ des „coords“-Objekts ermittelt werden. Die Genauigkeit der Höhe wird in Metern angegeben:
HTML-Datei:
Ergebnis:
Latitude (Breitengrad): | |
Longitude (Längengrad): | |
Genauigkeit (Latitude / Longitude): | |
Altitude (Höhe): | |
Genauigkeit (Höhe): | |
Status: |
Hinweis: Die Genauigkeit der Höhe ist nur verfügbar, wenn zur Positionsbestimmung GPS verwendet wird!
Mit der Eigenschaft „heading“ des „coords“-Objekts kann die Richtung, in der sich das mobile Gerät bewegt, ermittelt werden. Die Richtung wird dabei als Winkel zwischen 0° und 360° angegeben. Mit der Eigenschaft „speed“ des „coords“-Objekts kann die Geschwindigkeit in Meter pro Sekunde (m/s), mit der sich das mobile Gerät bewegt, ermittelt werden. Mit der Eigenschaft „timestamp“ des an die Callback-Funktion übergebenen Objekts, kann das Datum und die Uhrzeit der Positionsbestimmung ermittelt werden:
HTML-Datei:
Ergebnis:
Latitude (Breitengrad): | |
Longitude (Längengrad): | |
Genauigkeit (Latitude / Longitude): | |
Altitude (Höhe): | |
Genauigkeit (Höhe): | |
Richtung: | |
Geschwindigkeit: | |
Zeitstempel: | |
Status: |
Hinweis: Auch die Eigenschaften Richtung, Geschwindigkeit und der Zeitstempel können nur ermittelt werden, wenn zur Positionsbestimmung GPS verwendet wird!
Mit der Methode „watchPosition()“ des „geolocation“-Objekts können Positionsänderungen des Anwenders verfolgt werden. Dazu wird der Methode eine Callback-Funktion übergeben, die zunächst die aktuelle Position des Anwender übergibt und danach immer dann aufgerufen wird, wenn sich die Position des Anwenders ändert. Die Methode „watchPosition()“ gibt außerdem eine ID zurück, mit der die gestartete Positionsverfolgung identifiziert und wieder gestoppt werden kann. Dazu wird die ID der Methode „clearWatch()“ des „geolocation“-Objekts übergeben:
HTML-Datei:
Ergebnis:
Latitude (Breitengrad): | |
Longitude (Längengrad): | |
Altitude (Höhe): | |
Richtung: | |
Geschwindigkeit: | |
Zeitstempel: | |
Status: |
Den beiden Methoden „getCurrentPosition()“ und „watchPosition()“ können noch eine zweite Callback-Funktion übergeben werden. Die Callback-Funktion bekommt dann ein Objekt übergeben, aus dem Fehlermeldungen ausgelesen werden können. Blockiert der Anwender z. B. die Standortermittelung, so ist dies der Fehlercode „1“ mit der Fehlermeldung „User denied Geolocation“:
HTML-Datei:
Ergebnis:
Latitude (Breitengrad): | |
Longitude (Längengrad): | |
Altitude (Höhe): | |
Zeitstempel: | |
Status: | |
Fehler-Code: | |
Fehler-Meldung: |
Ergebnis im Browser:
Den beiden Methoden „getCurrentPosition()“ und „watchPosition()“ können auch noch ein Eigenschaftsobjekt übergeben werden. Mit der booleschen Eigenschaft „enableHighAccuracy“ des Objekts kann GPS aktiviert oder deaktiviert werden. Standardmäßig ist GPS deaktiviert, da es zwar genauer ist als die Positionsbestimmung über Mobilfunksignale, aber auch einen höheren Akkuverbrauch zur Folge hat. Mit der Eigenschaft „timeout“ kann eine Zeitdauer in Millisekunden angegeben werden, wie lange auf eine Rückmeldung von der Positionsbestimmung per GPS gewartet wird. Mit der Eigenschaft „maximumAge“ kann eine Zeitdauer in Millisekunden angegeben werden, innerhalb derer auf eine vorherige erfolgreiche Positionsbestimmung per GPS zurückgegriffen wird:
HTML-Datei:
Ergebnis:
Latitude (Breitengrad): | |
Longitude (Längengrad): | |
Altitude (Höhe): | |
Zeitstempel: | |
Status: | |
Fehler-Code: | |
Fehler-Meldung: |
Hinweis: Das Beispiel funktioniert nur auf Geräten mit GPS-Empfänger!
Als Abschlussübung kannst du folgendes Beispiel erstellen, bei dem zunächst die aktuelle geografische Position des Anwenders ermittelt und zusätzlich in zwei bearbeitbare Felder übertragen wird. Hier kann der Anwender nun eigene Ziel-Koordinaten eingeben. Mit dem Button „Pos.-Verfolgung starten“ kann die Positionsverfolgung gestartet werden. Wenn die aktuellen Koordinaten mit den Ziel-Koordinaten übereinstimmen, wird im Status-Feld der Text „Ziel erreicht!“ ausgegeben:
Latitude (Breitengrad): | |
Longitude (Längengrad): | |
Altitude (Höhe): | |
Richtung: | |
Geschwindigkeit: | |
Zeitstempel: | |
Status: | |
Fehler-Code: | |
Fehler-Meldung: | |
Ziel-Breitengrad: | |
Ziel-Länengrad: |
Gehe dabei wie folgt vor:
Die Lösung kannst du dir hier herunterladen: