Die W3C Geolocation API standardisiert den Zugriff von Webbrowsern auf Ortungssensoren in Smartphones, Tablets und PCs.
Über das globale JavaScript-Objekt navigator.geolocation können Webanwendungen Standortkoordinaten nach ausdrücklicher Freigabe durch den Nutzer abfragen. Dieser Leitfaden bietet umfassende technische Einblicke und praxisnahen Produktivcode.
Geolocation-Antwort Ihres Browsers prüfen
Lösen Sie einen Aufruf von navigator.geolocation aus, um Koordinaten, Geschwindigkeit, Kurs, Höhe und Zeitstempel live einzusehen.
1. Kernarchitektur und API-Methoden
Die W3C-Spezifikation umfasst drei fundamentale Methoden:
navigator.geolocation.getCurrentPosition(success, error, options)
Fragt eine einmalige Momentaufnahme der aktuellen Position ab. Gibt im Erfolgsfall ein GeolocationPosition-Objekt oder bei Ablehnung einen Fehler zurück.
navigator.geolocation.watchPosition(success, error, options)
Registriert einen Handler, der bei jeder Positionsänderung aufgerufen wird. Liefert eine watchId für die kontinuierliche Live-Verfolgung.
navigator.geolocation.clearWatch(watchId)
Beendet die mit watchPosition() gestartete kontinuierliche Abfrage, schont den Akku und deaktiviert die Ortungssensoren.
2. Produktivtauglicher JavaScript-Code
Hier ist ein robustes Codebeispiel mit Timeout-Handling, Fehlerabfangung und aktivierter hoher Genauigkeit:
// Check browser support
if ('geolocation' in navigator) {
const options = {
enableHighAccuracy: true, // Request GPS hardware rather than IP lookup
timeout: 10000, // Maximum wait time of 10 seconds
maximumAge: 0 // Do not return cached coordinates
};
function successCallback(position) {
const { latitude, longitude, accuracy, altitude, heading, speed } = position.coords;
console.log(`Latitude: ${latitude}, Longitude: ${longitude}`);
console.log(`Accuracy radius: ${accuracy} meters`);
}
function errorCallback(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
console.error("User denied Geolocation permission.");
break;
case error.POSITION_UNAVAILABLE:
console.error("Location information is unavailable (weak GPS/Wi-Fi signal).");
break;
case error.TIMEOUT:
console.error("The request to get user location timed out.");
break;
}
}
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options);
} else {
console.warn("Geolocation API is not supported in this browser.");
}3. Wichtige Konfigurationsoptionen: PositionOptions
| Eigenschaft | Typ | Standardwert | Funktion und technischer Einfluss |
|---|---|---|---|
enableHighAccuracy | Boolean | false | Aktiviert bei true den internen GNSS/GPS-Chip (< 3-5 m Genauigkeit). Bei false wird stromsparende WLAN- oder Mobilfunk-Triangulation genutzt. |
timeout | Positive integer (ms) | Infinity | Maximale Wartezeit in Millisekunden, bevor der Fehler TIMEOUT ausgelöst wird. Empfohlen: 8.000 bis 12.000 ms. |
maximumAge | Positive integer (ms) | 0 | Maximales Alter einer gecachten Position. 0 erzwingt eine sofortige neue Messung über Satelliten oder WLAN. |
4. Sicherheitsanforderungen und Berechtigungsrichtlinien
- Sicherer Kontext (HTTPS Pflicht): Seit Chrome 50 und iOS 10 ist die Geolocation API über unverschlüsseltes HTTP deaktiviert.
- Nutzerinteraktion erforderlich: Das Auslösen der Anfrage per Klick ('Standort abrufen') führt zu deutlich höheren Zustimmungsraten.
- Iframe-Berechtigung: Bei Einbettung in ein <iframe> muss das Attribut allow='geolocation' gesetzt werden.
Dezimalgrad-Werte der API umrechnen
Konvertieren Sie Dezimalausgaben bequem in Grad, Minuten, Sekunden (GMS) oder das UTM-Gittersystem.