Signatur
Beschreibung
Die schreibgeschützte Eigenschaft altitude des Interfaces GeolocationCoordinates gibt die Höhe der ermittelten Position in Metern über dem WGS84-Referenzellipsoid an. Sie steht im Objekt position.coords, das die Callbacks von navigator.geolocation.getCurrentPosition() und watchPosition() erhalten.
Einen Höhenwert gibt es nur, wenn die Positionsquelle eine Höhe ermitteln kann – meist ist das ein GPS-Empfänger, etwa im Smartphone. Bei Ortung über WLAN, Mobilfunk oder IP-Adresse (typisch auf Desktop-Rechnern) ist der Wert null. Prüfe den Wert deshalb vor jeder Berechnung.
Wie genau der Wert ist, steht in der Eigenschaft altitudeAccuracy (in Metern, 95 % Konfidenz). Nützlich ist altitude zum Beispiel für Wander- und Fahrrad-Apps, für Höhenprofile oder für Tracking-Anwendungen, die Höhenmeter aufsummieren.
Wichtig: Die Höhe über dem Ellipsoid ist nicht dasselbe wie die Höhe über dem Meeresspiegel (in Deutschland „Normalhöhennull“, NHN). Je nach Region weichen beide Werte um mehrere Dutzend Meter voneinander ab (Geoidundulation, in Mitteleuropa etwa 36–50 m).
Rückgabewert
null, wenn keine Höhe verfügbar ist.Beispiele
Aktuelle Höhe einmalig abfragen
if ('geolocation' in navigator) {
navigator.geolocation.getCurrentPosition(
({ coords }) => {
if (coords.altitude === null) {
console.log('Keine Höhenangabe verfügbar.');
return;
}
const genauigkeit = coords.altitudeAccuracy ?? 'unbekannt';
console.log(`Höhe: ${coords.altitude.toFixed(1)} m (±${genauigkeit} m)`);
},
(err) => console.error('Ortung fehlgeschlagen:', err.message),
{ enableHighAccuracy: true, timeout: 10000 }
);
}
Höhenmeter beim Wandern aufsummieren
let letzteHoehe = null;
let anstieg = 0;
const watchId = navigator.geolocation.watchPosition(
({ coords }) => {
const { altitude, altitudeAccuracy } = coords;
// Ungenaue oder fehlende Werte ignorieren
if (altitude === null || (altitudeAccuracy ?? Infinity) > 15) return;
if (letzteHoehe !== null) {
const diff = altitude - letzteHoehe;
// Kleine Schwankungen (Rauschen) herausfiltern
if (Math.abs(diff) < 3) return;
if (diff > 0) anstieg += diff;
}
letzteHoehe = altitude;
console.log(`Aufstieg bisher: ${Math.round(anstieg)} m`);
},
(err) => console.error(err.message),
{ enableHighAccuracy: true, maximumAge: 0 }
);
// Später beenden:
// navigator.geolocation.clearWatch(watchId);
Promise-Wrapper mit async/await
const holePosition = (optionen = {}) =>
new Promise((resolve, reject) =>
navigator.geolocation.getCurrentPosition(resolve, reject, optionen)
);
const zeigeHoehe = async () => {
try {
const { coords } = await holePosition({ enableHighAccuracy: true });
const text = coords.altitude !== null
? `${Math.round(coords.altitude)} m über Ellipsoid`
: 'Höhe unbekannt';
document.querySelector('#hoehe').textContent = text;
} catch (err) {
console.error(`Fehler ${err.code}: ${err.message}`);
}
};
zeigeHoehe();
// Wichtig · Fallstricke
nullist der Normalfall auf Desktop-Rechnern: Ohne GPS wird fast nie eine Höhe geliefert. Prüfe mit=== null, nicht mit einer Wahrheitswert-Prüfung, denn0ist ein gültiger Wert.- Ellipsoid statt Meeresspiegel: Der Wert bezieht sich auf WGS84 und nicht auf NHN oder den mittleren Meeresspiegel. Für „Meter über dem Meer“ musst du die Geoidundulation abziehen oder einen Höhen-Webdienst bzw. ein digitales Geländemodell nutzen.
- Ungenauigkeit: Die GPS-Höhe ist meist deutlich ungenauer als die Lage (oft ±10–30 m). Prüfe immer
altitudeAccuracyund glätte die Werte, bevor du Höhenmeter aufsummierst. enableHighAccuracy: trueerhöht die Chance auf einen Höhenwert, verbraucht aber mehr Akku.- Sicherheit und Datenschutz: Die Geolocation-API gibt es nur in sicheren Kontexten (HTTPS oder localhost). Sie verlangt eine Erlaubnis durch die Nutzerin oder den Nutzer und lässt sich in iframes über die Permissions-Policy
geolocationsperren. - Die Eigenschaft ist schreibgeschützt: Zuweisungen werden stillschweigend ignoriert und lösen im Strict Mode keinen Fehler aus, weil es sich um einen Getter ohne Setter handelt.
- Browser-Unterstützung: Die Eigenschaft gibt es in allen modernen Browsern (Chrome, Firefox, Safari, Edge). Ob ein Wert kommt, hängt aber von der Hardware ab.