Wenn Sie die Höhe für Elemente auf einer 3D-Karte angeben, z. B. für Linien, Polygone, Modelle oder Markierungen, können sich mehrere Faktoren auf die Platzierung auswirken, sowohl innerhalb der Szene als auch darauf, wie das Rendering der Szene mit diesem Element interagiert. In diesem Dokument wird die Verwendung von AltitudeMode auf einer 3D-Karte und die Verwaltung der Höhe für Elemente beschrieben.
So können Sie AltitudeMode mit verschiedenen Elementtypen verwenden:
Markierungen: Marker3DElement, Marker3DInteractiveElement
Geben Sie eine Höhe für den Standort und eine Extrusion an.
Modelle: Model3DElement, Model3DInteractiveElement
Geben Sie eine Höhe für den Ankerpunkt des Modells an, die zusammen mit der Ausrichtung für die richtige Positionierung in der Szene verwendet werden soll.
Polylinien:Polyline3DElement, Polyline3DInteractiveElement
Geben Sie an, wie die Höhe auf Positionspunkte entlang einer Polylinie angewendet wird.
Polygone:Polygon3DElement, Polygon3DInteractiveElement
Geben Sie an, wie die Höhe auf Positionspunkte entlang eines Polygons angewendet wird.
Verwendung der Höhe in 3D-Umgebungen
Wenn Sie Punkte in einer 3D-Szene platzieren, wird ihre endgültige Position durch das Vorhandensein von erfassten 3D-Gebäuden oder Objekten wie Bäumen beeinflusst. Es ist wichtig, zwei Schlüsselkonzepte zu verstehen:
- Digitales Geländemodell (Digital Terrain Model, DTM): Dieses Modell stellt die Höhe der „unbebauten Erde“ dar. Stellen Sie sich das als die natürliche Form des Landes ohne Gebäude, Bäume oder andere Strukturen vor. Alle Bereiche basieren auf dem DTM, das die Grundlage für die Höhe des Globus bildet (berechnet mit EGM96).
- Digitales Oberflächenmodell (DSM): Dieses Modell stellt die Höhe der „oberen Oberfläche“ dar, einschließlich Gebäuden, Bäumen und anderen Strukturen. In Gebieten, in denen Objekte erfasst wurden (insbesondere in städtischen Umgebungen, in denen Gebäude die Ansicht dominieren), erscheint die sichtbare Oberfläche höher als das Basisgelände.
Die Unterscheidung zwischen DTM und DSM ist wichtig, um zu verstehen, wie verschiedene Höhenmodi mit diesen digitalen Höhenmodellen (DEMs) interagieren, da die Platzierung von Elementen durch das Oberflächenmodell verdeckt oder beeinflusst werden kann. Die Unterschiede sind im Diagramm unten dargestellt:

Wenn für Elemente keine Höhendaten vorhanden sind
Wenn Sie Daten ohne Höhenmessung haben oder Daten aus einem anderen Google-Dienst wie dem Routes- oder Places-Dienst verwenden, ist in der zurückgegebenen Geometrie oft keine Höhe enthalten. In solchen Fällen müssen Sie den AltitudeMode sorgfältig auswählen, um das Element in der Szene zu platzieren:
- Am Boden verankern: Der einfachste Ansatz, bei dem sich das Element automatisch an das Gelände anpasst. In diesem Modus wird das DTM-Modell verwendet.
- Beliebige Höhe + relativer Modus: Sie können eine beliebige Höhe zuweisen und dann RELATIVE_TO_GROUND (Elemente werden relativ zum DTM-Modell platziert) oder RELATIVE_TO_MESH (Elemente werden über dem DSM-Modell platziert) verwenden.
- Anderen Dienst verwenden, um die Höhe zu ermitteln: Wenn Sie die genaue DTM-Höhe am Standort des Elements benötigen, können Sie einen Dienst wie die Elevation API der Google Maps Platform verwenden. Wenn es sich um eine Linie oder ein Polygon handelt, müssen Sie dies für jeden der Punkte tun, aus denen die Linie oder das Polygon besteht.
Was bedeuten die AltitudeMode-Optionen und wann sollten sie verwendet werden?
Es gibt vier AltitudeMode-Optionen, die Sie beim Definieren eines Features angeben können:
ABSOLUTE
Stellen Sie sich ein Flugzeug vor, das in einer bestimmten Höhe über dem Meeresspiegel fliegt,z. B. 10.000 Fuß. Die Höhe ist fest, egal ob es über einen Berg oder ein Tal fliegt.
Verwendung: Die Höhe des Objekts wird relativ zum durchschnittlichen Meeresspiegel angegeben (berechnet mit EGM96). Die Höhenangabe des Elements wird als genaue Höhe über dem Meeresspiegel interpretiert.
Verwendung: Für Elemente mit bekannten, genauen Höhen, z. B. Flugbahnen, untergetauchte Objekte mit genauer Tiefe oder wissenschaftliche Instrumente mit festem Standort.
CLAMP_TO_GROUND
Stellen Sie sich vor, Sie legen eine Picknickdecke direkt auf einen Hang. Egal, wie steil oder flach der Hügel ist, die Decke liegt immer flach auf der sichtbaren Oberfläche.
Verwendung: Die Höhe des Objekts wird so angegeben, dass es direkt auf dem Boden platziert ist. Sie bleiben auf Bodenhöhe und folgen dem Gelände, unabhängig von einem angegebenen Höhenwert. Die Höhenkoordinate des Elements wird ignoriert und direkt auf die Geländeoberfläche (DTM) projiziert.
Anwendungsfälle: Für Elemente, die immer dem Gelände entsprechen sollten, z. B. Straßen, Zäune, Wege, Grundstücksgrenzen oder die Basis von Gebäuden.
RELATIVE_TO_GROUND
Stellen Sie sich einen Heißluftballon vor, der sich 100 Meter über der natürlichen Bodenhöhe (DTM) befindet. Wenn der Boden ansteigt, steigt auch der Ballon, sodass der Abstand von 100 Metern zum „unbedeckten Boden“ beibehalten wird.
Verwendung: Die Höhe des Objekts wird relativ zur Bodenoberfläche (DTM) angegeben. Die Höhenkoordinate des Elements wird als Versatz von der Geländehöhe an seiner horizontalen Position interpretiert.
Verwendung: Für Objekte, die eine gleichbleibende Höhe über dem natürlichen Gelände haben müssen, z. B. Kommunikationstürme oder Freileitungen in ländlichen Gebieten.
RELATIVE_TO_MESH
Das ist so, als würde eine Drohne in einer festen Höhe über dem fliegen, was sich unter ihr befindet, sei es der nackte Boden, ein Gebäudedach oder die Spitze eines Baums. Sie wird an die höchste sichtbare Oberfläche (DSM) angepasst.
Verwendung: Die Höhe des Objekts wird relativ zum höchsten Punkt der Oberfläche (Boden + Gebäude + Wasseroberfläche) (DSM) angegeben. Die Höhenkoordinate des Elements wird als Versatz zur DSM-Höhe interpretiert.
Verwendung: Für Objekte, die in einer bestimmten Höhe über dem Boden schweben sollen (DTM, Gebäude, Wasser). Nützlich für Markierungen auf Dächern oder Elemente, die sich dynamisch an die sichtbare Szene anpassen.
Weitere Informationen finden Sie in der Dokumentation zu den AltitudeMode-Konstanten.
Visuelle Beispiele und praktische Anwendungen
In diesen Beispielen wird ein bestimmter Ort, Stonehenge, verwendet, um zu veranschaulichen, wie sich verschiedene AltitudeMode-Optionen auf die Platzierung von Elementen auswirken. In diesen Beispielen wird zuerst die Positionierung von Markierungen und dann die Positionierung von Linien und Bereichen behandelt, für die andere Überlegungen gelten.
Positionsmarkierungen
Angenommen, eine Stecknadelmarkierung wird so platziert:
const markerLocation = { lat: 51.1789, lng: -1.8262, altitude: 102.23 };
In der Szene unten ist das die weiße Markierung:

Sehen Sie sich nun das Bild unten an. Es zeigt verschiedenfarbige Markierungen, die mit den unterschiedlichen Höhenmodi positioniert wurden.

Sehen wir uns an, wie sich die verschiedenen AltitudeMode-Werte auf die Positionierung der Markierung in aufsteigender Reihenfolge der Höhe auswirken.
CLAMP_TO_GROUND (lila Markierung)
Diese Markierung ignoriert den Höhenwert und wird an der nächstgelegenen Bodenhöhe angebracht. Sie sehen sie direkt unter der weißen Markierung, die effektiv am Gelände „festgeklemmt“ ist.
Technisch gesehen wird in diesem Modus die tatsächliche Höhe ignoriert und die Markierung an der nächstgelegenen DTM-Höhe fixiert.
ABSOLUTE (weiße Markierung)
Diese Markierung verwendet den genauen Höhenwert (102,23 m), um die Markierung auf dieser Höhe über dem Meeresspiegel (EGM96) zu platzieren.Sie wird auf einem der Stonehenge-Steine angezeigt, wie durch die angegebene Höhe festgelegt.
Technisch gesehen wird in diesem Modus der tatsächlich angegebene Höhenwert verwendet, um die Markierung in der angegebenen Höhe über dem Meeresspiegel zu platzieren. In diesem Beispiel ist das der Standort von Stonehenge, aber oben auf einem der Steine.
RELATIVE_TO_GROUND (Orange Pin)
Diese Markierung verwendet den Boden (DTM) als Basis und wird 102,23 m über dem Bodenniveau platziert.Sie scheint über dem natürlichen Boden zu schweben, der sich unter dem Stein im Henge befindet.
Technisch gesehen wird in diesem Modus die Basis auf die Höhe des tatsächlichen DGM am Boden festgelegt und die Markierung dann 102, 23 m darüber platziert.
RELATIVE_TO_MESH (blauer Pin)
Diese Markierung verwendet die sichtbare Oberfläche (DSM) als Basis und wird 102,23 m über dieser Oberfläche platziert. In diesem Modus wird die Höhe des Steins in die Messung einbezogen, sodass er etwas höher als die orangefarbene Markierung ausgerichtet wird.
Technisch gesehen wird in diesem Modus das Mesh (DSM) als Basis verwendet und der Ort in der angegebenen Höhe darüber platziert. Da sich das DSM oben auf dem Menhir befindet, wird diese zusätzliche Höhe bei der Bestimmung der relativen Höhe berücksichtigt. Die Markierung wird also etwas höher als die Markierung RELATIVE_TO_GROUND platziert.
Linien und Bereiche positionieren
Bei Linien und Flächen sind sowohl die Höhe der Punkte innerhalb des Elements (unabhängig davon, ob angegeben oder nicht) als auch der verwendete AltitudeMode entscheidend. Sehen wir uns eine Linie entlang Stonehenge mit den folgenden angegebenen Höhen an:
const lineCoords = [
{ lat: 51.1786, lng : -1.8266, altitude: 101.36 },
{ lat: 51.1787, lng : -1.8264, altitude: 101.18 },
{ lat: 51.178778, lng : -1.826354, altitude: 104.89 },
{ lat: 51.178815, lng : -1.826275, altitude: 107.55 },
{ lat: 51.178923, lng : -1.825980, altitude: 105.53 },
{ lat: 51.1791, lng : -1.8258, altitude: 100.29 },
{ lat: 51.1792, lng : -1.8257, altitude: 100.29 }
];
Diese Linie ist im Bild unten in Weiß dargestellt und verwendet die absolute Positionierung.

In der Abbildung unten sehen Sie die Linien mit unterschiedlichen Höhenmodi. Sehen wir uns die einzelnen Stufen der Reihe nach an, von der niedrigsten bis zur höchsten.

CLAMP_TO_GROUND (lila Linie)
Bei dieser Linie wird die angegebene Höhe für jeden Punkt ignoriert und die Linie stattdessen direkt über dem zugrunde liegenden Boden (DTM) „gelegt“. Sie folgt dem Gelände und ignoriert alle Elemente wie Gebäude oder Steine darüber.
Technisch gesehen werden in diesem Modus die tatsächlichen Höhenwerte ignoriert und die Linie wird über das DTM gelegt. Dabei wird das zugrunde liegende Gelände berücksichtigt und das Mesh der darüber liegenden Elemente ignoriert.
ABSOLUT (weiße Linie)
Diese Linie verwendet die genaue Höhe für jeden Punkt, sodass sie über einige der Steine verläuft. Die einzelnen Punkte werden durch gerade Linien verbunden. Wenn die Punkte nicht häufig genug gesetzt werden, kann es manchmal so aussehen, als ob die Linien durch Objekte verlaufen.
Technisch gesehen folgt dieser Modus der angegebenen Höhe für jeden Punkt und verbindet sie mit geraden Linien. Das bedeutet, dass er durch das Mesh (z. B. Steine) verlaufen kann, wenn die Höhenwerte dies vorgeben. Dieses Szenario wird in einem späteren Abschnitt behandelt.
RELATIVE_TO_GROUND (orangefarbene Linie)
Diese Linie verwendet den natürlichen Boden (DTM) als Basis und platziert jeden Punkt in der angegebenen Höhe über dem Boden.
Technisch gesehen wird in diesem Modus das DTM als Basis verwendet und die Linienpositionen werden in der angegebenen Höhe relativ dazu platziert.
RELATIVE_TO_MESH (blaue Linie)
Diese Linie verwendet die sichtbare Oberfläche, einschließlich Gebäuden und Steinen, als Basis. Anschließend wird jeder Punkt in der angegebenen Höhe über diesem Mesh platziert, sodass die Form der Linie in Bezug auf die sichtbare Landschaft effektiv nachgebildet wird.
Technisch gesehen wird in diesem Modus das Mesh (DSM) als Basis verwendet und die Orte werden in der angegebenen Höhe darüber platziert. Je nach Mesh kann sich die Linie aufgrund der unterschiedlichen Merkmale am Boden ändern.
Wenn für Linien keine Höhe angegeben ist
Sehen wir uns nun dieselben Linienkoordinaten an, aber ohne Angabe einer Höhe:
const lineCoords = [
{ lat: 51.1786, lng : -1.8266 },
{ lat: 51.1787, lng : -1.8264 },
{ lat: 51.178778, lng : -1.826354 },
{ lat: 51.178815, lng : -1.826275 },
{ lat: 51.178923, lng : -1.825980 },
{ lat: 51.1791, lng : -1.8258 },
{ lat: 51.1792, lng : -1.8257 }
];
In diesem Szenario, in dem keine Höhe angegeben ist, werden die Linien oft an ähnlichen Orten angezeigt. Die weißen, orangen und violetten Linien werden möglicherweise zu einer einzigen Linie (orange, da sie normalerweise zuletzt gezeichnet wird) zusammengeführt, da sie alle standardmäßig eine ähnliche Positionierung auf Bodenhöhe haben. Das sieht dann so aus:

Die blaue Linie (RELATIVE_TO_MESH) verwendet wieder das Mesh (DSM) als Basis. Da keine Höhe angegeben ist, werden die Punkte direkt über dem Mesh-Netzwerk eingeblendet. Dabei wird die Linie nicht auf das Netz gelegt, sondern die angegebenen Punkte auf dem Netz werden mit geraden Linien verbunden. In einigen Beispielen mag das akzeptabel aussehen, kann aber zu Sichtbarkeitsproblemen führen, wenn es von anderen Elementen verdeckt wird. Dieses Problem wird im nächsten Abschnitt behandelt.
Die Interaktion von Netzen und Linien. Sehen wir uns eine weitere Polylinie an. Dieses Bild zeigt denselben Bereich, aber mit mehr Bodenbedeckung (oder mehr Details im DSM über dem DTM).
const lineCoords = [
{ lat: 51.188404, lng: -1.779059, altitude: 70.69 },
{ lat: 51.187955, lng: -1.780143, altitude: 77.25 },
{ lat: 51.187658, lng: -1.781552, altitude: 68.97 },
{ lat: 51.187376, lng: -1.782447, altitude: 99.02 },
{ lat: 51.186912, lng: -1.783692, altitude: 104.35 },
{ lat: 51.185855, lng: -1.788368, altitude: 86.91 },
];
Wenn wir die Darstellung mit denselben Methoden (und Farben) wie zuvor verwenden, erhalten wir diese Ansicht:

Lila ist CLAMP_TO_GROUND, was Sie am Boden sehen können. Weiß ist ABSOLUT. Sie sehen, dass die Punkte, die absolut im Raum positioniert sind, durch gerade Linien verbunden sind. Orange und Blau sind relative Versionen, die sich entweder auf die OBERFLÄCHE (DTM) oder das NETZ (DSM) beziehen. Beachten Sie, dass die blaue Linie aufgrund der Höhe der darunter liegenden Merkmale eine etwas andere Form hat.
Auch hier können wir feststellen, dass die Linie durch das Mesh verläuft, da die Punkte durch gerade Linien miteinander verbunden sind. In diesem Szenario kann es zu Problemen bei der Anzeige der Linien kommen. Sie können drawsOccludedSegments auf true setzen, damit die Linie durch die Bäume sichtbar ist, wie im folgenden Bild genauer zu sehen ist, wo die Linien, die durch das Mesh verlaufen, noch zu sehen sind.

Aufgrund der Positionierung im Raum können die Punkte und die Linien, die die Punkte verbinden, in das Mesh fallen, was zu visuellen Artefakten führen kann. Im folgenden Abschnitt sehen wir uns an, wie solche Artefakte nach Möglichkeit verbessert werden können.
Probleme bei der Interaktion zwischen Linien und Gelände beheben
In einem anderen Beispiel im selben Bereich sehen wir einige andere Artefakte, die wir bei der Verwendung bestimmter Höhenmodi beachten müssen.
Hier haben wir einen relativ flachen Bereich, der sich hauptsächlich auf der Ebene des DTM befindet, mit begrenzten zusätzlichen Details darüber im Mesh. Dieses Szenario würde auch in einem Gebiet auftreten, für das es keine 3D-Abdeckung über dem Geländemodell gibt. Sehen wir uns den folgenden Standort an:
const lineCoords = [
{ lat: 51.194642, lng: -1.782636, altitude: 99.10 },
{ lat: 51.193974, lng: -1.783952, altitude: 99.86 },
{ lat: 51.192203, lng: -1.787175, altitude: 96.14 },
{ lat: 51.190024, lng: -1.790250, altitude: 105.92 },
{ lat: 51.187491, lng: -1.793580, altitude: 102.60 },
{ lat: 51.183690, lng: -1.798745, altitude: 95.69 },
];
Das ist in der Abbildung zu sehen. Die Linien haben dieselbe Farbdarstellung wie zuvor: (weiß : ABSOLUTE, blau : RELATIVE_TO_MESH, lila : CLAMP_TO_GROUND, orange: RELATIVE_TO_GROUND).

Hier sehen wir eine Reihe von Artefakten. Das erste ist, dass sich die orangefarbene (RELATIVE_TO_GROUND) und die blaue (RELATIVE_TO_MESH) Linie aufgrund der fehlenden Oberflächenabdeckung (meistens) an derselben Stelle befinden. Die blaue Linie wird angezeigt, da sie zuletzt gezeichnet wurde.
Außerdem ist zu sehen, dass die violette Linie (CLAMP_TO_GROUND) dem Boden folgt und auf dem Hügel zu sehen ist, während die weiße Linie (ABSOLUTE) im Hügel verschwindet, da nur die Punkte verbunden sind und die geraden Linien durch den Boden verlaufen.
Das ist in diesem Bild besonders gut zu sehen, wenn die lila Linie ausgeblendet ist.

Das kann zu seltsamen visuellen Artefakten führen, bei denen die Linie unter dem Boden (oder sogar durch das Mesh) verschwindet, da die Linie zwischen den Punkten einfach einem geraden Pfad folgt. Sie können die visuelle Darstellung einer solchen Linie verbessern, indem Sie mit einer Interpolationsmethode weitere Punkte zwischen den Linien hinzufügen. Wie sich dies auf die visuelle Darstellung auswirkt, hängt wiederum von der verwendeten Methode ab:
- Für relative Messungen (RELATIVE_TO_GROUND oder RELATIVE_TO_MESH): Wenn Sie relative Höhenwerte verwenden, können Sie durch das Erstellen von mehr Punkten entlang einer Linie oder eines Polygons das Element auf einer geeigneteren Ebene platzieren, die besser zum Höhenprofil passt. Wenn diese Zwischenpunkte nicht in Ihren Daten enthalten sind, können Sie sie mit einer Interpolationsfunktion wie der Interpolate-Funktion in der Geometry-Bibliothek der Google Maps Platform hinzufügen. Diesen neuen Punkten können dann relative Werte zugewiesen werden, die über dem entsprechenden Höhenprofil platziert werden. Die Länge der Linien, die die Punkte verbinden, wird begrenzt und die visuelle Darstellung verbessert.
- Für absolute Features (ABSOLUTE): Bei ABSOLUTE-Features müssen mehr Punkte tatsächliche Höhenwerte haben. Wenn Sie zwischen vorhandenen absoluten Werten interpolieren, erhalten Sie keinen Punkt, der einen Wert über dem Mesh genau widerspiegelt, da es sich lediglich um einen Durchschnitt zwischen Punkt A und Punkt B handelt.
Zusammenfassung
In diesem Dokument finden Sie eine umfassende Übersicht über die AltitudeMode-Optionen in fotorealistischen 3D-Karten. Es wird detailliert beschrieben, wie sich ABSOLUTE, CLAMP_TO_GROUND, RELATIVE_TO_GROUND und RELATIVE_TO_MESH auf die Platzierung und das Rendering verschiedener Elemente wie Markierungen, Linien und Polygone auswirken.
Wenn Sie wissen, wie diese Modi mit dem zugrunde liegenden digitalen Geländemodell (Digital Terrain Model, DTM) und dem digitalen Oberflächenmodell (Digital Surface Model, DSM) zusammenarbeiten, können Sie genaue und visuell ansprechende 3D-Kartendarstellungen mit möglichst wenigen visuellen Artefakten erstellen.
Wir hoffen, dass Sie diese Höhenmodi in Ihren eigenen Projekten ausprobieren, um das volle Potenzial von 3D-Karten auszuschöpfen und ansprechende, immersive Erlebnisse für Ihre Nutzer zu schaffen. Wir freuen uns auf Ihr Feedback.
Beitragende
Matt Toon | Solutions Engineer, Geo Developer