Os usuários podem controlar o zoom, a inclinação, a posição e a rotação da câmera usando gestos no mapa. Também é possível configurar a câmera de forma programática.

A posição da câmera
A visualização do mapa é modelada como uma câmera apontada para um ponto específico no espaço. A posição e a orientação da câmera são definidas por coordenadas de latitude/longitude/altitude (definidas como o "centro", para onde a câmera está apontando), direção, inclinação, alcance e rotação.
Centro (latitude, longitude, altitude)
O centro define o ponto específico no espaço 3D que a câmera está
observando. Isso é especificado usando a classe
LatLngAltitude,
que combina valores de latitude, longitude e altitude. Isso permite
posicionar o ponto focal da câmera em três dimensões.
A latitude pode variar entre -90 e 90 graus, inclusive. A longitude varia entre -180 e 180 graus. A altitude é especificada em metros,
e a forma como ela é interpretada é determinada pelo
altitudeMode
da câmera
(AltitudeMode.ABSOLUTE
por padrão,
AltitudeMode.RELATIVE_TO_GROUND
ou
AltitudeMode.RELATIVE_TO_MESH).
Título
A direção especifica a direção da bússola do mapa, medida em graus no sentido horário a partir do norte verdadeiro. O norte corresponde a 0 grau, o leste a 90 graus, o sul a 180 graus e o oeste a 270 graus.
Inclinação
A inclinação especifica o ângulo da câmera em relação ao eixo vertical, medido em graus. Uma inclinação de 0 grau significa que a câmera está apontando diretamente para a Terra (nadir). Uma inclinação de 90 graus significa que a câmera está apontada horizontalmente na direção especificada pela direção.
Intervalo
O intervalo define a distância em metros entre a posição da câmera e o centro do mapa. O intervalo pode variar de zero metro (muito próximo) até 63 milhões de metros, permitindo visualizações de muito perto até uma perspectiva verdadeiramente global. Isso controla o nível de zoom do mapa.
Rolo
A rolagem define o ângulo da câmera em relação ao horizonte, medido em graus. Esse parâmetro pode ser usado para criar efeitos como inclinação durante simulações de voo ou até mesmo um giro completo, girando a câmera em torno do eixo de visualização.
Como controlar a câmera
O exemplo de código a seguir demonstra como controlar oCamera
de maneira programática chamando o método
setCamera
em
GoogleMap3D.
Para usar esse exemplo de código, siga as instruções em
Configuração e Adicionar um mapa 3D ao seu
app para configurar seu
projeto do Android Studio com um mapa 3D básico. Em seguida, adicione o seguinte código ao
arquivo 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 interface
Além dos gestos padrão, o SDK do Maps 3D para Android também oferece controles de interface para manipular a posição da câmera.
- Zoom: mostra os botões "+" e "-" para mudar o nível de zoom do mapa.
- O controle de movimento mostra os botões "←", "→", "↑" e "↓" para mudar o centro do mapa.
- Os controles de rotação mostram "↺" e "↻" para mudar a direção da câmera.
- O controle de inclinação mostra "^" e "⌄" para mudar a inclinação da câmera.
- O controle de bússola indica a direção do norte e permite redefinir a câmera para uma direção norte.
O exemplo de código a seguir mostra como mudar a visibilidade dos controles de interface:
```kotlin // Adicionar importações 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>// Mostrar controles de interface na borda final do mapa uiControlSettings?.setUiControlsPlacement( listOf(CompassControl(), ZoomControl(), TiltControl()), UiControlSettings.ControlPlacement.TRAILING )</p> <p>// Ocultar controles de interface na borda final do mapa uiControlSettings?.setUiControlsPlacement( emptyList(), UiControlSettings.ControlPlacement.TRAILING )