Konfigurowanie ustawień aparatu

Wybierz platformę: Android iOS JavaScript

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

Diagram przedstawiający model kamery 3D

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
)