Start · Sprachen · JavaScript · Referenz · GeolocationCoordinates.altitude

GeolocationCoordinates.altitude

Eigenschaft

Schreibgeschützte Höhe der Position in Metern über dem WGS84-Ellipsoid – oder <code>null</code>, wenn das Gerät keine Höhe liefern kann.

seit JavaScript Baseline: alle Browser (Secure Context erforderlic Kategorie: webapi

Signatur

GeolocationCoordinates.altitude

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

Typ
number | null
Beschreibung
Höhe in Metern über dem WGS84-Ellipsoid als Gleitkommazahl oder 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öhe: 412.3 m (±8 m)

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);
Aufstieg bisher: 27 m

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

  • null ist der Normalfall auf Desktop-Rechnern: Ohne GPS wird fast nie eine Höhe geliefert. Prüfe mit === null, nicht mit einer Wahrheitswert-Prüfung, denn 0 ist 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 altitudeAccuracy und glätte die Werte, bevor du Höhenmeter aufsummierst.
  • enableHighAccuracy: true erhö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 geolocation sperren.
  • 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.