Aggiungere un modello 3D a una mappa

Seleziona la piattaforma: Android iOS JavaScript

Un modello 3D su una mappa

Il seguente esempio di codice mostra come aggiungere un modello 3D e posizionarlo nello spazio 3D chiamando il metodo addModel. Per utilizzare questo esempio di codice, segui le istruzioni riportate in Configurazione e Aggiungi una mappa 3D alla tua app per configurare il progetto Android Studio con una mappa 3D di base. Poi, aggiungi il seguente codice al file MainActivity.kt:

// Add imports and define constants
import com.google.android.gms.maps3d.model.Map3DMode
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.setMapMode(Map3DMode.SATELLITE)
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
        }
    }
)

Ascolta gli eventi di clic sul modello 3D

Per rilevare gli eventi di clic su un modello 3D, chiama setClickListener sull'oggetto del modello. L'esempio seguente mostra come impostare un click listener su un modello 3D:

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

Tieni presente che il gestore dei clic non viene eseguito nel thread principale (o dell'interfaccia utente). Se vuoi apportare modifiche alla UI (ad esempio mostrare un messaggio Toast), devi passare al thread principale. Per Kotlin, puoi farlo utilizzando lifecycleScope.launch(Dispatchers.Main).