Les utilisateurs peuvent contrôler le zoom, l'inclinaison, la position et la rotation de la caméra à l'aide de gestes sur la carte. Vous pouvez également configurer la caméra de manière programmatique.

Position de la caméra
La vue de la carte est modélisée comme une caméra orientée vers un point spécifique de l'espace. La position et l'orientation de la caméra sont définies par les coordonnées de latitude/longitude/altitude (définies comme le "centre", vers lequel la caméra est pointée), le cap, l'inclinaison, la portée et le roulis.
Centre (latitude, longitude, altitude)
Le centre définit le point spécifique de l'espace 3D que la caméra observe. Pour ce faire, utilisez la classe LatLngAltitude, qui combine les valeurs de latitude, de longitude et d'altitude. Cela vous permet de positionner le point focal de la caméra en trois dimensions.
La latitude peut être comprise entre -90 et 90 degrés, inclus. La longitude est comprise entre -180 et 180 degrés, inclus. L'altitude est spécifiée en mètres, et la façon dont elle est interprétée est déterminée par l'élément altitudeMode de la caméra (AltitudeMode.ABSOLUTE par défaut, AltitudeMode.RELATIVE_TO_GROUND ou AltitudeMode.RELATIVE_TO_MESH).
Titre
Le cap spécifie la direction de la boussole sur la carte, mesurée en degrés dans le sens des aiguilles d'une montre à partir du nord géographique. Le nord correspond à 0 degré, l'est à 90 degrés, le sud à 180 degrés et l'ouest à 270 degrés.
Inclinaison
L'inclinaison spécifie l'angle de la caméra par rapport à l'axe vertical, mesuré en degrés. Une inclinaison de 0 degré signifie que la caméra pointe directement vers la Terre (nadir). Une inclinaison de 90 degrés signifie que la caméra est orientée horizontalement dans la direction spécifiée par l'orientation.
Plage
La plage définit la distance en mètres entre la position de la caméra et le centre de la carte. La plage peut varier de zéro mètre (très près) à 63 millions de mètres, ce qui permet d'obtenir des vues très rapprochées ou une perspective véritablement globale. Cela permet de contrôler le niveau de zoom de la carte.
Roulis
Le roulis définit l'angle de la caméra par rapport à l'horizon, mesuré en degrés. Ce paramètre peut être utilisé pour créer des effets tels que l'inclinaison lors de simulations de vol ou même un tonneau complet, en faisant pivoter la caméra autour de son axe de visualisation.
Contrôler la caméra
L'exemple de code suivant montre comment contrôlerCamera de manière programmatique en appelant la méthode setCamera sur GoogleMap3D.
Pour utiliser cet exemple de code, suivez les instructions des sections Configuration et Ajouter une carte 3D à votre application afin de configurer votre projet Android Studio avec une carte 3D de base. Ensuite, ajoutez le code suivant au fichier 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
}
)
Commandes d'interface utilisateur
En plus des gestes standards, le SDK Maps 3D pour Android fournit également des commandes d'interface utilisateur permettant de manipuler la position de la caméra.
- La commande de zoom affiche les boutons "+" et "-" pour modifier le niveau de zoom de la carte.
- La commande de déplacement affiche les boutons "←", "→", "↑" et "↓" pour modifier le centre de la carte.
- Les commandes de rotation affichent "↺" et "↻" pour modifier l'orientation de la caméra.
- La commande d'inclinaison affiche les boutons "^" et "⌄" pour modifier l'inclinaison de la caméra.
- La commande de boussole indique la direction du nord et permet de réinitialiser la caméra vers le nord.
L'exemple de code suivant montre comment modifier la visibilité des commandes de l'interface utilisateur :
```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</p> <p>...</p> <p>val uiControlSettings = googleMap3D.getUiControlSettings()</p> <p>// Show UI controls on the trailing edge of the map uiControlSettings?.setUiControlsPlacement( listOf(CompassControl(), ZoomControl(), TiltControl()), UiControlSettings.ControlPlacement.TRAILING )</p> <p>// Hide UI controls on the trailing edge of the map uiControlSettings?.setUiControlsPlacement( emptyList(), UiControlSettings.ControlPlacement.TRAILING )