Positionsbestimmung

Was ist Positionsbestimmung?

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.

Positionsbestimmung mit GPS

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.

Positionsbestimmung über Mobilfunksignale

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.

WLAN-basierte Positionsbestimmung

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.

Positionsbestimmung über IP-Adressen

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.

HTML-Geolocation-API

Verwendung der Geolocation-API

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:

Beispiel1

Status:

Bestimmung von Breiten-, Längengrad und der Höhe

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:

Beispiel2

Latitude (Breitengrad):
Longitude (Längengrad):
Altitude (Höhe):
Status:

Hinweis: Die Höhe kann nur ermittelt werden, wenn zur Positionsbestimmung GPS verwendet wird!

Bestimmung der Genauigkeit

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:

Beispiel3

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!

Richtung, Geschwindigkeit und Zeitstempel

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:

Beispiel4

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!

Position verfolgen

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:

Beispiel5

Latitude (Breitengrad):
Longitude (Längengrad):
Altitude (Höhe):
Richtung:
Geschwindigkeit:
Zeitstempel:
Status:

Fehlermeldungen

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:

Beispiel6

Latitude (Breitengrad):
Longitude (Längengrad):
Altitude (Höhe):
Zeitstempel:
Status:
Fehler-Code:
Fehler-Meldung:

Ergebnis im Browser:

Zusätzliche Eigenschaften

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:

Beispiel7

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!

Abschlussübung

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:

Beispiel8

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:

  • Kopiere das Beispiel 5 und füge die Ausgabe von Fehlermeldungen aus Beispiel 6 und das Setzen zusätzlicher Eigenschaften aus Beispiel 7 hinzu
  • Verwende für den Parameter „maximumAge“ den Wert „0“
  • Füge aus Beispiel 7 ebenfalls die Funktion „showPos()“ hinzu, so dass es nun jeweils eine Funktion „showPos()“, „watchPos()“ und showErr()“ gibt
  • Füge eine Funktion „startWatchPos()“ hinzu, die über das „onclick“-Event vom ersten Button aus aufgerufen wird, die Eingabeparameter „Ziel-Breitengrad“ und „Ziel-Längengrad“ ausliest und die Positionsverfolgung startet
  • Füge in der Funktion „watchPos()“ eine Abfrage hinzu, die prüft, ob die aktuellen Koordinaten mit den Ziel-Koordinaten übereinstimmen
  • Ist dies der Fall, beende die Positionsverfolgung und gebe den Status „Ziel erreicht!“
  • Füge eine Funktion „stopWatchPos()“ hinzu, die über das „onclick-Event des zweiten Button aufgerufen wird, die Positionsverfolgung beendet und den Status „Positionsverfolgung beendet!“ ausgibt
  • Runde die Breiten- und Längenangaben auf fünf Nachkommastellen
  • Gebe die Geschwindigkeit in „km/h“ aus (* 3,6) und runde sie auf eine Nachkommastelle
  • Gebe den Zeitstempel als Datums-/Zeitangabe aus

Die Lösung kannst du dir hier herunterladen:

Download
Geolocation8.html
HTML Dokument 3.3 KB

Quellen