Agrega un modelo 3D a un mapa

Selecciona la plataforma: Android iOS JavaScript

Un modelo 3D en un mapa

En el siguiente ejemplo de código, se muestra cómo agregar un modelo 3D y posicionarlo en el espacio 3D llamando al addModel método. Para usar este ejemplo de código, sigue las instrucciones que se indican en Configura y agrega un mapa 3D a tu app para configurar tu proyecto de Android Studio con un mapa 3D básico. Luego, agrega el siguiente código al archivo MainActivity.kt:

// Add imports and define constants
import com.google.android.gms.maps3d.model.latLngAltitude
val PLANE_URL = "https://storage.googleapis.com/gmp-maps-demos/p3d-map/assets/Airplane.glb"
val PLANE_SCALE = 0.05

// Add to the onMap3DViewReady method, after the googleMap3D object has been initialized
googleMap3D.setCamera(
   camera {
        center = latLngAltitude {
            latitude = 47.133971
            longitude = 11.333161
            altitude = 2200.0
        }
        heading = 221.0
        tilt = 65.0
        range = 1_200.0
    }
)

googleMap3D.addModel(
    modelOptions {
        id = "plane_model"
        position = latLngAltitude {
            latitude = 47.133971
            longitude = 11.333161
            altitude = 2200.0
        }
        altitudeMode = AltitudeMode.ABSOLUTE
        orientation = orientation {
            heading = 41.5
            tilt = -90.0
            roll = 0.0
        }
        url = PLANE_URL
        scale = vector3D {
            x = PLANE_SCALE
            y = PLANE_SCALE
            z = PLANE_SCALE
        }
    }
)

Escucha eventos de clic del modelo 3D

Para escuchar eventos de clic en un modelo 3D, llama a setClickListener en el objeto del modelo. En el siguiente ejemplo, se muestra cómo configurar un objeto de escucha de clics en un modelo 3D:

model.setClickListener {
    lifecycleScope.launch(Dispatchers.Main) {
        Toast.makeText(this@ModelsActivity, "Model clicked", Toast.LENGTH_SHORT).show()
    }
}

Ten en cuenta que el controlador de clics no se ejecuta en el subproceso principal (o de IU). Si deseas realizar cambios en la IU (como mostrar un mensaje de Toast), debes cambiar al subproceso principal. En Kotlin, puedes hacerlo con lifecycleScope.launch(Dispatchers.Main).