Cómo configurar los controles de la cámara

Selecciona la plataforma: Android iOS JavaScript

Los usuarios pueden controlar el zoom, la inclinación, la posición y la rotación de la cámara con gestos en el mapa. También puedes configurar la cámara de forma programática.

Diagrama que ilustra el modelo de cámara 3D

La posición de la cámara

La vista del mapa responde a un modelo en el cual una cámara apunta hacia un punto específico en el espacio. La posición y la orientación de la cámara se definen con las coordenadas de latitud, longitud y altitud (definidas como el "centro", hacia donde apunta la cámara), el rumbo, la inclinación, el rango y el balanceo.

Centro (latitud, longitud, altitud)

El centro define el punto específico en el espacio 3D que observa la cámara. Esto se especifica con la clase LatLngAltitude, que combina valores de latitud, longitud y altitud. Esto te permite posicionar el punto focal de la cámara en tres dimensiones.

La latitud puede variar entre -90 y 90 grados, inclusive. La longitud varía entre -180 y 180 grados, inclusive. La altitud se especifica en metros, y la forma en que se interpreta la altitud se determina por el altitudeMode de la cámara (AltitudeMode.ABSOLUTE de forma predeterminada, AltitudeMode.RELATIVE_TO_GROUND o AltitudeMode.RELATIVE_TO_MESH).

Encabezado

La orientación especifica la dirección de la brújula del mapa, medida en grados en el sentido de las manecillas del reloj a partir del norte geográfico. El norte corresponde a 0 grados; el este, a 90 grados; el sur, a 180 grados, y el oeste, a 270 grados.

Inclinación

La inclinación especifica el ángulo de la cámara con respecto al eje vertical, medido en grados. Una inclinación de 0 grados significa que la cámara apunta directamente hacia abajo, hacia la Tierra ( nadir). Una inclinación de 90 grados significa que la cámara apunta horizontalmente en la dirección especificada por la orientación.

Rango

El rango define la distancia en metros entre la posición de la cámara y el centro del mapa. El rango puede variar de cero metros (muy cerca) hasta sesenta y tres millones de metros, lo que permite vistas desde muy cerca hasta una perspectiva verdaderamente global. Esto controla de forma eficaz el nivel de "acercamiento" o "alejamiento" con el que aparece el mapa.

Giro

El giro establece el ángulo de la cámara con respecto al horizonte, medido en grados. Este parámetro se puede usar para crear efectos como el de inclinación durante las simulaciones de vuelo o incluso un giro completo, rotando la cámara alrededor de su eje de visualización.

Cómo controlar la cámara

En la siguiente muestra de código, se indica cómo controlar el Camera de manera programática llamando al método setCamera en GoogleMap3D. Para usar esta muestra de código, sigue las instrucciones que se indican en Configuración y Agrega un mapa en 3D a tu app para configurar tu proyecto de Android Studio con un mapa en 3D básico. Luego, agrega el siguiente código al archivo 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
    }
)

Controles de la IU

Además de los gestos estándar, el SDK de Maps 3D para Android también proporciona controles de la IU para manipular la posición de la cámara.

  • El control de zoom muestra los botones "+" y "-" para cambiar el nivel de zoom del mapa.
  • El control de movimiento muestra los botones "←", "→", "↑" y "↓" para cambiar el centro del mapa.
  • Los controles de rotación muestran "↺" y "↻" para cambiar la orientación de la cámara.
  • El control de inclinación muestra "^" y "⌄" para cambiar la inclinación de la cámara.
  • El control de la brújula indica la dirección del norte de la brújula y permite restablecer la cámara a una orientación hacia el norte.

En la siguiente muestra de código, se indica cómo cambiar la visibilidad de los controles de la IU:

```kotlin // Agrega importaciones 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>// Muestra los controles de la IU en el borde final del mapa uiControlSettings?.setUiControlsPlacement( listOf(CompassControl(), ZoomControl(), TiltControl()), UiControlSettings.ControlPlacement.TRAILING )</p> <p>// Oculta los controles de la IU en el borde final del mapa uiControlSettings?.setUiControlsPlacement( emptyList(), UiControlSettings.ControlPlacement.TRAILING )