Signatur
Beschreibung
Die schreibgeschützte Eigenschaft altitudeAccuracy des Interfaces GeolocationCoordinates gibt an, wie genau der Wert von altitude ist. Der Wert ist ein strikt positiver double in Metern. Er beschreibt den Radius, in dem die tatsächliche Höhe mit einer Wahrscheinlichkeit von 95 % liegt. Ein Wert von 10 heißt also: Die echte Höhe liegt sehr wahrscheinlich höchstens 10 m über oder unter dem gemeldeten Wert.
Kann das Gerät keine Höhe ermitteln, sind altitude und altitudeAccuracy beide null. Das kommt häufig vor, etwa bei einer Ortung über WLAN oder IP-Adresse auf Desktop-Rechnern. Einen verlässlichen Höhenwert liefern meist nur Geräte mit GPS oder Barometer.
Nutzen Sie die Eigenschaft, wenn Höhenwerte eine Rolle spielen, zum Beispiel für Höhenprofile in Wander- oder Fahrrad-Apps, für die Stockwerkserkennung oder um ungenaue Messungen herauszufiltern. Den Wert erhalten Sie über position.coords in den Callbacks von navigator.geolocation.getCurrentPosition() und watchPosition().
Rückgabewert
null, wenn keine Höhenangabe vorliegt.Beispiele
Höhe und Genauigkeit einmalig abfragen
navigator.geolocation.getCurrentPosition(
({ coords }) => {
if (coords.altitude === null) {
console.log('Keine Höhenangabe verfügbar.');
return;
}
console.log(`Höhe: ${coords.altitude.toFixed(1)} m ± ${coords.altitudeAccuracy.toFixed(1)} m`);
},
(err) => console.error(`Fehler ${err.code}: ${err.message}`),
{ enableHighAccuracy: true, timeout: 10000 }
);
Ungenaue Höhenwerte beim Tracking herausfiltern
const MAX_HOEHENFEHLER = 15; // Meter
const profil = [];
const watchId = navigator.geolocation.watchPosition(
({ coords, timestamp }) => {
const { altitude, altitudeAccuracy } = coords;
if (altitude === null || altitudeAccuracy === null) return;
if (altitudeAccuracy > MAX_HOEHENFEHLER) {
console.log(`Verworfen: ±${altitudeAccuracy} m`);
return;
}
profil.push({ zeit: timestamp, hoehe: altitude });
console.log(`Punkt ${profil.length}: ${altitude.toFixed(1)} m`);
},
console.error,
{ enableHighAccuracy: true, maximumAge: 0 }
);
// Nach 5 Minuten beenden
setTimeout(() => navigator.geolocation.clearWatch(watchId), 5 * 60 * 1000);
Promise-Wrapper mit Qualitätsstufe
const getPosition = (options) =>
new Promise((resolve, reject) =>
navigator.geolocation.getCurrentPosition(resolve, reject, options)
);
const hoehenQualitaet = (acc) => {
if (acc === null) return 'unbekannt';
if (acc <= 5) return 'sehr gut';
if (acc <= 20) return 'brauchbar';
return 'grob';
};
const main = async () => {
const { coords } = await getPosition({ enableHighAccuracy: true });
console.log('Höhenqualität:', hoehenQualitaet(coords.altitudeAccuracy));
};
main().catch((e) => console.error(e.message));
// Wichtig · Fallstricke
- Häufig
null: Auf Desktop-Rechnern und bei einer Ortung über Netzwerk oder IP fehlt die Höhe fast immer. Prüfen Sie deshalb immer aufnull, bevor Sie Methoden wietoFixed()aufrufen. - Nicht mit
accuracyverwechseln:accuracybeschreibt die waagerechte Genauigkeit von Breiten- und Längengrad.altitudeAccuracygilt nur für die Höhe. Bei GPS ist die Höhe meist deutlich ungenauer als die waagerechte Position. - Bezugssystem:
altitudebezieht sich laut Spezifikation auf das WGS-84-Ellipsoid, nicht auf den Meeresspiegel. Die Abweichung kann je nach Region mehrere Dutzend Meter betragen, und zwar unabhängig vonaltitudeAccuracy. enableHighAccuracy: trueerhöht die Chance auf GPS-Höhenwerte, verbraucht aber mehr Akku und dauert länger.- Kompatibilität und Datenschutz: Die Eigenschaft wird von allen modernen Browsern unterstützt. Die Geolocation-API funktioniert jedoch nur im sicheren Kontext (HTTPS oder localhost) und erst, nachdem die Nutzerin oder der Nutzer zugestimmt hat. Außerdem kann eine Permissions-Policy (
geolocation) sie blockieren, etwa in iframes.