You can set a marker's altitude by setting the
altitudeMode
property to one of the
following values:
ABSOLUTE
RELATIVE_TO_GROUND
CLAMP_TO_GROUND
RELATIVE_TO_MESH
The following code sample
demonstrates how to use each of the methods. To use this code sample, follow the instructions in
Setup and
Add a 3D map to your app to set
up your Android Studio project with a basic 3D map. Then, add the following code to the
MainActivity.kt file:
// Add importsimportcom.google.android.gms.maps3d.model.latLngAltitude...// Add to the onMap3DViewReady method, after the googleMap3D object has been initializedgoogleMap3D.setMapMode(Map3DMode.SATELLITE)googleMap3D.setCamera(camera{center=latLngAltitude{latitude=52.51974795longitude=13.40715553altitude=150.0}heading=252.7tilt=79.0range=1500.0})// Marker 1: AbsolutegoogleMap3D.addMarker(markerOptions{position=latLngAltitude{latitude=52.519605780912585longitude=13.406867190588198altitude=150.0}label="Absolute (150m)"altitudeMode=AltitudeMode.ABSOLUTEisExtruded=trueisDrawnWhenOccluded=truecollisionBehavior=CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL})// Marker 2: Relative to GroundgoogleMap3D.addMarker(markerOptions{position=latLngAltitude{latitude=52.519882191069016longitude=13.407410777254293altitude=50.0}label="Relative to Ground (50m)"altitudeMode=AltitudeMode.RELATIVE_TO_GROUNDisExtruded=trueisDrawnWhenOccluded=true})// Marker 3: Clamped to GroundgoogleMap3D.addMarker(markerOptions{position=latLngAltitude{latitude=52.52027645136134longitude=13.408271658592406altitude=0.0// altitude is effectively ignored by CLAMP_TO_GROUND for rendering,// but might be relevant if you read the marker's position later.// For CLAMP_TO_GROUND, it's often set to 0.0.}label="Clamped to Ground"altitudeMode=AltitudeMode.CLAMP_TO_GROUNDisExtruded=trueisDrawnWhenOccluded=true})// Marker 4: Relative to MeshgoogleMap3D.addMarker(markerOptions{position=latLngAltitude{latitude=52.520835071144226longitude=13.409426847943774altitude=10.0// Altitude relative to 3D mesh (buildings, terrain features)}label="Relative to Mesh (10m)"altitudeMode=AltitudeMode.RELATIVE_TO_MESHisExtruded=trueisDrawnWhenOccluded=true})
[null,null,["Last updated 2025-08-28 UTC."],[],[],null,["# Configure marker altitude\n\nSelect platform: [Android](/maps/documentation/maps-3d/android-sdk/configure-marker-altitude \"View this page for the Android platform docs.\") [iOS](/maps/documentation/maps-3d/ios-sdk/configure-marker-altitude \"View this page for the iOS platform docs.\")\n\n\u003cbr /\u003e\n\n| This product or feature is Experimental (pre-GA). Pre-GA products and features might have limited support, and changes to pre-GA products and features might not be compatible with other pre-GA versions. Pre-GA Offerings are covered by the [Google\n| Maps Platform Service Specific Terms](https://cloud.google.com/maps-platform/terms/maps-service-terms). For more information, see the [launch stage descriptions](/maps/launch-stages).\n\n\nYou can set a marker's altitude by setting the\n[`altitudeMode`](/maps/documentation/maps-3d/android-sdk/reference/com/google/android/gms/maps3d/model/MarkerOptions#altitudeMode())\nproperty to one of the\nfollowing values:\n\n- `ABSOLUTE`\n- `RELATIVE_TO_GROUND`\n- `CLAMP_TO_GROUND`\n- `RELATIVE_TO_MESH`\n\nThe following code sample\ndemonstrates how to use each of the methods. To use this code sample, follow the instructions in\n[Setup](/maps/documentation/maps-3d/android-sdk/setup) and\n[Add a 3D map to your app](/maps/documentation/maps-3d/android-sdk/add-a-3d-map) to set\nup your Android Studio project with a basic 3D map. Then, add the following code to the\n**`MainActivity.kt`** file: \n\n```kotlin\n // Add imports\n import com.google.android.gms.maps3d.model.latLngAltitude\n \n ...\n \n // Add to the onMap3DViewReady method, after the googleMap3D object has been initialized\n googleMap3D.setMapMode(Map3DMode.SATELLITE)\n \n googleMap3D.setCamera(\n camera {\n center = latLngAltitude {\n latitude = 52.51974795\n longitude = 13.40715553\n altitude = 150.0\n }\n heading = 252.7\n tilt = 79.0\n range = 1500.0\n }\n )\n \n \n // Marker 1: Absolute\n googleMap3D.addMarker(markerOptions {\n position = latLngAltitude {\n latitude = 52.519605780912585\n longitude = 13.406867190588198\n altitude = 150.0\n }\n label = \"Absolute (150m)\"\n altitudeMode = AltitudeMode.ABSOLUTE\n isExtruded = true\n isDrawnWhenOccluded = true\n collisionBehavior = CollisionBehavior.REQUIRED_AND_HIDES_OPTIONAL\n })\n \n // Marker 2: Relative to Ground\n googleMap3D.addMarker(markerOptions {\n position = latLngAltitude {\n latitude = 52.519882191069016\n longitude = 13.407410777254293\n altitude = 50.0\n }\n label = \"Relative to Ground (50m)\"\n altitudeMode = AltitudeMode.RELATIVE_TO_GROUND\n isExtruded = true\n isDrawnWhenOccluded = true\n })\n \n // Marker 3: Clamped to Ground\n googleMap3D.addMarker(markerOptions {\n position = latLngAltitude {\n latitude = 52.52027645136134\n longitude = 13.408271658592406\n altitude = 0.0 // altitude is effectively ignored by CLAMP_TO_GROUND for rendering,\n // but might be relevant if you read the marker's position later.\n // For CLAMP_TO_GROUND, it's often set to 0.0.\n }\n label = \"Clamped to Ground\"\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isExtruded = true\n isDrawnWhenOccluded = true\n })\n \n // Marker 4: Relative to Mesh\n googleMap3D.addMarker(markerOptions {\n position = latLngAltitude {\n latitude = 52.520835071144226\n longitude = 13.409426847943774\n altitude = 10.0 // Altitude relative to 3D mesh (buildings, terrain features)\n }\n label = \"Relative to Mesh (10m)\"\n altitudeMode = AltitudeMode.RELATIVE_TO_MESH\n isExtruded = true\n isDrawnWhenOccluded = true\n })\n \n \n```"]]