Użytkownicy mogą kontrolować powiększenie, pochylenie, pozycję i obrót kamery za pomocą gestów na mapie. Możesz też skonfigurować kamerę automatycznie.

Pozycja kamery
Widok mapy jest modelowany jako kamera skierowana na określony punkt w przestrzeni. Położenie i orientacja kamery są określane przez współrzędne szerokości/długości geograficznej/wysokości (definiowane jako „środek”, w który skierowana jest kamera), kierunek, nachylenie, zasięg i obrót.
Środek (szerokość, długość i wysokość geograficzna)
Środek określa konkretny punkt w przestrzeni 3D, który obserwuje kamera. Służy do tego klasa LatLngAltitude, która łączy wartości szerokości i długości geograficznej oraz wysokości. Dzięki temu możesz ustawić punkt ostrości kamery w 3 wymiarach.
Szerokość geograficzna może wynosić od –90 do 90 stopni. Długość geograficzna mieści się w zakresie od -180 do 180 stopni włącznie. Wysokość jest podawana w metrach, a sposób jej interpretacji zależy od ustawienia altitudeMode kamery (domyślnie AltitudeMode.ABSOLUTE, AltitudeMode.RELATIVE_TO_GROUND lub AltitudeMode.RELATIVE_TO_MESH).
Nagłówek
Kierunek określa kierunek kompasu na mapie, mierzony w stopniach zgodnie z ruchem wskazówek zegara od północy geograficznej. Północ odpowiada 0 stopniom, wschód – 90 stopniom, południe – 180 stopniom, a zachód – 270 stopniom.
Pochylenie
Pochylenie określa kąt kamery względem osi pionowej, mierzony w stopniach. Kąt nachylenia wynoszący 0 stopni oznacza, że kamera jest skierowana prosto w dół, w stronę Ziemi (nadir). Nachylenie wynoszące 90 stopni oznacza, że kamera jest skierowana poziomo w kierunku określonym przez kierunek.
Zakres
Zakres określa odległość w metrach między pozycją kamery a środkiem mapy. Zakres może wynosić od zera metrów (bardzo blisko) do 63 milionów metrów, co pozwala na wyświetlanie widoków od bardzo bliskich do prawdziwie globalnych. W ten sposób możesz kontrolować, jak bardzo mapa jest powiększona lub pomniejszona.
Obrót
Przechylenie określa kąt kamery względem horyzontu, mierzony w stopniach. Ten parametr może służyć do tworzenia efektów takich jak przechylenie podczas symulacji lotu, a nawet pełna beczka, czyli obrót kamery wokół osi widzenia.
Sterowanie kamerą
Poniższy przykładowy kod pokazuje, jak sterowaćCamera automatycznie przez wywołanie metody setCamera w GoogleMap3D.
Aby użyć tego przykładowego kodu, postępuj zgodnie z instrukcjami podanymi w sekcjach Konfiguracja i Dodawanie mapy 3D do aplikacji, aby skonfigurować projekt Android Studio z podstawową mapą 3D. Następnie dodaj do pliku MainActivity.kt ten kod:
// 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
}
)
Elementy sterujące interfejsu
Oprócz standardowych gestów pakiet SDK Map 3D na Androida udostępnia też elementy sterujące interfejsu do manipulowania pozycją kamery.
- Element sterujący powiększeniem wyświetla przyciski „+” i „-”, które służą do zmiany poziomu powiększenia mapy.
- Element sterujący przemieszczaniem wyświetla przyciski „←”, „→”, „↑” i „↓” do zmiany środka mapy.
- Elementy sterujące obracaniem wyświetlają „↺” i „↻”, aby zmienić kierunek kamery.
- Sterowanie nachyleniem wyświetla „^” i „⌄”, aby zmienić nachylenie kamery.
- Kompas wskazuje północ i umożliwia ustawienie kamery w kierunku północnym.
Poniższy przykładowy kod pokazuje, jak zmienić widoczność elementów sterujących interfejsu:
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
)