Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Geolocation API
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Sicherer Kontext: Diese Funktion ist nur insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.
DieGeolocation API ermöglicht es dem Nutzer, seine Position an Webanwendungen weiterzugeben, falls er dies wünscht. Aus Datenschutzgründen wird der Nutzer um Erlaubnis gebeten, Standortinformationen zu übermitteln.
WebExtensions, die dasGeolocation-Objekt verwenden möchten, müssen die Berechtigung"geolocation" zu ihrem Manifest hinzufügen. Das Betriebssystem des Nutzers wird den Nutzer beim ersten Anfordern um Erlaubnis bitten, Standortzugriff zu gewähren.
Hinweis:Das<geolocation>-Element bietet einen alternativen Mechanismus zum Zugreifen und Verarbeiten von Geolokalisierungsdaten, der einige der Schwächen der Geolocation API löst: Es stellt eine konsistente Benutzeroberfläche und einen intuitiveren Berechtigungsverwaltungsprozess bereit.
In diesem Artikel
Konzepte und Nutzung
Häufig möchten Sie in Ihrer Webanwendung Standortinformationen eines Benutzers abrufen, um beispielsweise seine Position auf einer Karte anzuzeigen oder personalisierte Informationen, die für seinen Standort relevant sind, bereitzustellen.
Auf die Geolocation API wird über einen Aufruf vonnavigator.geolocation zugegriffen; dies veranlasst den Browser des Nutzers, um Erlaubnis zu bitten, auf seine Standortdaten zuzugreifen. Wenn er zustimmt, verwendet der Browser die bestmögliche Funktionalität des Geräts, um diese Informationen zu erhalten (zum Beispiel GPS).
Der Entwickler kann nun in verschiedenen Wegen auf diese Standortinformationen zugreifen:
Geolocation.getCurrentPosition(): Ruft die aktuelle Position des Geräts ab.Geolocation.watchPosition(): Registriert eine Handler-Funktion, die automatisch jedes Mal aufgerufen wird, wenn sich die Position des Geräts ändert und die aktualisierte Position zurückgibt.
In beiden Fällen nimmt der Methodenaufruf bis zu drei Argumente entgegen:
- Ein zwingender Erfolgscallback: Wenn der Standortabruf erfolgreich ist, wird der Callback mit einem
GeolocationPosition-Objekt als einzigem Parameter ausgeführt, das Zugang zu den Standortdaten bietet. - Ein optionaler Fehlercallback: Wenn der Standortabruf fehlschlägt, wird der Callback mit einem
GeolocationPositionError-Objekt als einzigem Parameter ausgeführt, das Zugang zu Informationen darüber bietet, was schiefgelaufen ist. - Ein optionales Objekt, das Optionen für den Abruf der Positionsdaten bereitstellt.
Für weitere Informationen zur Nutzung von Geolocation lesen SieVerwendung der Geolocation API.
Schnittstellen
GeolocationDie Hauptklasse dieser API — enthält Methoden, um die aktuelle Position des Nutzers abzurufen, Änderungen seiner Position zu beobachten und einen zuvor gesetzten Beobachter zu entfernen.
GeolocationPositionRepräsentiert die Position eines Nutzers. Eine Instanz von
GeolocationPositionwird bei einem erfolgreichen Aufruf einer der innerhalb vonGeolocationenthaltenen Methoden innerhalb eines Erfolgscallbacks zurückgegeben und enthält einen Zeitstempel sowie eine Instanz einesGeolocationCoordinates-Objekts.GeolocationCoordinatesStellt die Koordinaten der Position eines Nutzers dar; eine Instanz von
GeolocationCoordinatesenthält Latitude, Longitude und andere wichtige verwandte Informationen.GeolocationPositionErrorEin
GeolocationPositionErrorwird bei einem fehlgeschlagenen Aufruf einer der innerhalb vonGeolocationenthaltenen Methoden innerhalb eines Fehlercallback zurückgegeben und enthält einen Fehlercode und eine Nachricht.
Erweiterungen zu anderen Schnittstellen
Navigator.geolocationDer Einstiegspunkt in die API. Gibt eine Instanz eines
Geolocation-Objekts zurück, von dem aus alle anderen Funktionalitäten zugänglich sind.
Sicherheitsüberlegungen
Die Geolocation API ermöglicht es Nutzern, übersichere Kontexte programmgesteuert auf Standortinformationen zuzugreifen.
Der Zugriff kann zusätzlich durch diePermissions Policy-Direktivegeolocation kontrolliert werden.Die standardmäßige Erlaubnisliste fürgeolocation istself, was den Zugriff auf Standortinformationen nur in verschachtelten Frames mit demselben Ursprung erlaubt.Für die Nutzung durch Dritte muss einPermissions-Policy-Response-Header gesetzt werden, um Dritten aus einem bestimmten Ursprung die Erlaubnis zu erteilen:
Permissions-Policy: geolocation=(self b.example.com)Dasallow="geolocation"-Attribut muss dann dem iframe-Element hinzugefügt werden, das Quellen von diesem Ursprung enthält:
<iframe src="https://b.example.com" allow="geolocation"></iframe>Geolokalisierungsdaten können Informationen offenbaren, die der Gerätebesitzer nicht teilen möchte.Deshalb müssen Nutzer ausdrücklich die Erlaubnis über eine Eingabeaufforderung erteilen, wenn entwederGeolocation.getCurrentPosition() oderGeolocation.watchPosition() aufgerufen wird (es sei denn, der Berechtigungsstatus ist bereitsgranted oderdenied).Die Gültigkeitsdauer einer erteilten Erlaubnis hängt vom Benutzeragenten ab und kann zeitbasiert, sitzungsbasiert oder sogar dauerhaft sein.DiePermissions API-Erlaubnisgeolocation kann verwendet werden, um zu testen, ob der Zugriff zur Nutzung von Standortinformationengranted,denied oderprompt ist (erfordert die Bestätigung einer Eingabeaufforderung durch den Benutzer).
Beispiele
SieheVerwendung der Geolocation API für Beispielcode.
Spezifikationen
| Specification |
|---|
| Geolocation> # geolocation_interface> |
Browser-Kompatibilität
Verfügbarkeit
Da die positionsbestimmende Dienstleistung oft von Google bereitgestellt wird, kann die normale Geolocation API in China möglicherweise nicht verfügbar sein. Sie können lokale Drittanbieter wieBaidu,Autonavi oderTencent nutzen. Diese Dienste verwenden die IP-Adresse des Nutzers und/oder eine lokale App, um verbesserte Standortinformationen bereitzustellen.
Siehe auch
<geolocation>-Element- Verwendung der Geolocation API
- Who moved my geolocation? (Hacks-Blog)