DieW3C Geolocation API ist eine einheitlicheWebbrowser-Programmierschnittstelle zum Ermitteln desgeografischen Standorts des zugehörigen Endgeräts.[1] Die API definiert eine Reihe vonECMAScript-Objekten, über die sich einmalig oder dauerhaft Informationen über die geographische Position des Geräts auslesen lassen. Die Ermittlung der Position selbst wird dabei vom Browser bzw. Betriebssystem auf dem jeweiligen Endgerät durchgeführt und ist nicht Teil der API. Die Quellen der Ortsinformationen sind dabeiGeotargeting vonIP-Adressen,WLAN-basierte Ortung, die Funkzelleninformation des Mobilfunknetzes (GSM/CDMA2000) oder, vor allem inSmartphones, dasGlobal Positioning System. Da diese Quellen extreme Unterschiede in ihrer Genauigkeit aufweisen (von wenigen Metern bis hin zu etlichen Kilometern) gibt die API neben den jeweils genausten aktuell verfügbaren Positionsdaten auch einen Wert für deren Genauigkeit zurück.
Während Geolocation API heute praktisch von allen aktuellen Versionen der verbreiteten Mobil- und Desktop-Browser unterstützt wird,[2] war diese Technologie bei ihrer Einführung häufig nur über das mittlerweile eingestellteBrowser-Plug-inGoogle Gears verfügbar.
Die Ermittlung der Positionsdaten erfolgt asynchron. Die Daten sind also nicht in Echtzeit verfügbar, sondern werden von der API an eineCallback-Funktion zurückgegeben, sobald sie ermittelt wurden. Aus Sicherheits- und Datenschutzgründen muss dabei die Abfrage der Positionsdaten zumeist auch noch vom Nutzer der Website bestätigt werden.
Der folgendeJavaScript-Code überprüft, ob die Geolocation-API im Browser verfügbar ist und übergibt diese im Erfolgsfall an die FunktionshowPosition, die die Position, und falls vorhanden die Höheninformation, des Gerätes dann alsAlert-Meldung ausgibt. Mit einer zweiten FunktionshowError werden die Fehler abgefangen und ausgegeben, die bei der Ermittlung der Geokoordinaten auftreten können. Mit dem dritten Parameter können zusätzliche Optionen eingestellt werden.
if(navigator.geolocation){varoptions={enableHighAccuracy:true,}navigator.geolocation.getCurrentPosition(showPosition,showError,options);}else{alert('Ihr Browser unterstützt die W3C Geolocation API nicht.');}functionshowPosition(position){alert('Die geographische Position dieses Geräts ist (Stand: '+newDate(position.timestamp).toLocaleTimeString()+'):\n'+'Breitengrad: '+position.coords.latitude+'° \n'+'Längengrad: '+position.coords.longitude+'° \n'+' Genauigkeit: '+position.coords.accuracy+'m\n'+(position.coords.altitude?('Höhe: '+position.coords.altitude+'m\n'+' Genauigkeit: '+position.coords.altitudeAccuracy+'m'):""));}functionshowError(error){switch(error.code){caseerror.PERMISSION_DENIED:alert('Sie haben die Abfrage ihrer Position untersagt.');break;caseerror.POSITION_UNAVAILABLE:alert('Es sind keine Positionsdaten verfügbar.');break;caseerror.TIMEOUT:alert('Das Timeout für die Ortsanfrage wurde überschritten.');break;default:alert('Es ist ein unbekannter Fehler aufgetreten (#'+error.code+': '+error.message+')');break;}}