Gli utenti possono controllare lo zoom, l'inclinazione, la posizione e la rotazione della fotocamera utilizzando i gesti sulla mappa. Puoi anche configurare la videocamera in modo programmatico.

Posizione della videocamera
La visualizzazione mappa è modellata come una videocamera che guarda un punto specifico nello spazio. La posizione e l'orientamento della fotocamera sono definiti dalle coordinate di latitudine/longitudine/altitudine (definite come "centro", dove punta la fotocamera), direzione, inclinazione, intervallo e rollio.
Centro (latitudine, longitudine, altitudine)
Il centro definisce il punto specifico nello spazio 3D che la videocamera sta osservando. Questo viene specificato utilizzando la classe LatLngAltitude, che combina i valori di latitudine, longitudine e altitudine. In questo modo, puoi posizionare il punto focale della videocamera in tre dimensioni.
La latitudine può essere compresa tra -90 e 90 gradi inclusi. La longitudine è compresa tra -180 e 180 gradi inclusi. L'altitudine è specificata in metri e il modo in cui viene interpretata è determinato dal parametro altitudeMode della fotocamera (AltitudeMode.ABSOLUTE per impostazione predefinita, AltitudeMode.RELATIVE_TO_GROUND o AltitudeMode.RELATIVE_TO_MESH).
Intestazione
L'intestazione specifica la direzione della bussola della mappa, misurata in gradi in senso orario rispetto al nord geografico. Il nord corrisponde a 0 gradi, l'est a 90 gradi, il sud a 180 gradi e l'ovest a 270 gradi.
Inclinazione
L'inclinazione specifica l'angolo della fotocamera rispetto all'asse verticale, misurato in gradi. Un'inclinazione di 0 gradi indica che la fotocamera è puntata verso il basso, in direzione della Terra (nadir). Un'inclinazione di 90 gradi indica che la fotocamera è puntata orizzontalmente nella direzione specificata dall'intestazione.
Intervallo
L'intervallo definisce la distanza in metri tra la posizione della videocamera e il centro della mappa. L'intervallo può variare da zero metri (molto vicino) fino a 63 milioni di metri, consentendo di visualizzare da molto vicino fino a una prospettiva veramente globale. In questo modo, puoi controllare il livello di zoom della mappa.
Rotazione
Il rollio imposta l'angolo della fotocamera rispetto all'orizzonte, misurato in gradi. Questo parametro può essere utilizzato per creare effetti come l'inclinazione durante le simulazioni di volo o persino un rollio completo, ruotando la fotocamera attorno al suo asse di visualizzazione.
Controllare la videocamera
Il seguente esempio di codice mostra come controllareCamera
in modo programmatico chiamando il metodo
setCamera
su
GoogleMap3D.
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
import com.google.android.gms.maps3d.model.Map3DMode
import com.google.android.gms.maps3d.model.camera
import com.google.android.gms.maps3d.model.latLngAltitude
// Add to the onMap3DViewReady method, after the googleMap3D object has been initialized
googleMap3D.setMapMode(Map3DMode.HYBRID)
googleMap3D.setCamera(
camera {
center = latLngAltitude {
latitude = 38.743502
longitude = -109.499374
altitude = 1467.0
}
heading = 350.0
tilt = 58.1
range = 138.2
roll = 0.0
}
)
Controlli UI
Oltre ai gesti standard, Maps 3D SDK for Android fornisce anche controlli UI per manipolare la posizione della fotocamera.
- Il controllo Zoom mostra i pulsanti "+" e "-" per modificare il livello di zoom della mappa.
- Il controllo di spostamento mostra i pulsanti "←", "→", "↑" e "↓" per modificare il centro della mappa.
- I controlli di rotazione mostrano "↺" e "↻" per modificare l'orientamento della videocamera.
- Il controllo dell'inclinazione mostra "^" e "⌄" per modificare l'inclinazione della videocamera.
- Il controllo della bussola indica la direzione del nord della bussola e consente di reimpostare la videocamera verso nord.
Il seguente esempio di codice mostra come modificare la visibilità dei controlli UI:
Kotlin
// Add imports
import com.google.android.gms.maps3d.UiControlSettings
import com.google.android.gms.maps3d.model.CompassControl
import com.google.android.gms.maps3d.model.TiltControl
import com.google.android.gms.maps3d.model.ZoomControl
...
val uiControlSettings = googleMap3D.getUiControlSettings()
// Show UI controls on the trailing edge of the map
uiControlSettings?.setUiControlsPlacement(
listOf(CompassControl(), ZoomControl(), TiltControl()),
UiControlSettings.ControlPlacement.TRAILING
)
// Hide UI controls on the trailing edge of the map
uiControlSettings?.setUiControlsPlacement(
emptyList(),
UiControlSettings.ControlPlacement.TRAILING
)