Dostosuj ustawienia kamery

Aparat umożliwia zmianę punktu widzenia użytkownika mapy. Za pomocą trybów aparatu możesz kontrolować zachowanie widoku mapy podczas nawigacji. Aby ustawić tryb aparatu, wywołaj jedną z tych metod powiązanych z kamerą:

  • Śledź moją lokalizację (GoogleMap.followMyLocation) – domyślny tryb aparatu do nawigacji. Ten tryb ustawia aparat na urządzenie lub pojazd. Podczas nawigacji aparat automatycznie jest skierowany w kierunku jazdy. Przy włączonym ustawieniu wysokiej szczegółowości (NavigationMapStyle.HIGH_DETAIL) obrysy budynków 2D wyświetlają się przy powiększeniu 19 lub wyższym.

  • Przypięte do lokalizacji (GoogleMap.animateCamera i GoogleMap.moveCamera) – poprawia ustawienie kamery w konkretnym miejscu. W tym trybie możesz ustawić lokalizację kamery i inne jej właściwości, takie jak kierunek kierowania, przechylenie, powiększenie itp. Po wybraniu tego widoku i zainicjowaniu nawigatora widoczny jest przycisk Wyśrodkuj.

  • Pokaż przegląd trasy (NavigationView.showRouteOverview lub SupportNavigationFragment.showRouteOverview) – wyświetla przegląd pozostałej trasy, a także przesuwa i powiększa w zależności od potrzeb, aby dopasować ją do widoku mapy. Po wybraniu tego widoku widoczny jest przycisk Wyśrodkuj ponownie.

Kliknięcie przycisku Wyśrodkuj powoduje ustawienie aparatu w trybie followMyLocation.

Śledź mój tryb lokalizacji

Najczęściej jest tak, aby kamera była ustawiona na urządzenie lub pojazd, pokazująca jego aktualną pozycję na trasie. W trybie aparatu w trybie aparatu możesz zobaczyć trasę, gdy samochód jest zawsze skierowany w górę ekranu, z perspektywy pod kątem (CameraPerspective.TILTED), albo samochód jadący z kierunkiem północnym (CameraPerspective.TOP_DOWN_NORTH_UP) lub z kierunkiem (CameraPerspective.TOP_DOWN_HEADING_UP) zawsze u góry ekranu).

Ten fragment kodu korzysta z perspektywy TILTED:

// Set the camera to follow the device (vehicle):
mNavFragment.getMapAsync(googleMap -> googleMap.followMyLocation(CameraPerspective.TILTED))

Przypięto do trybu lokalizacji

Tryb Pinned daje Ci największą kontrolę nad kamerą. W tym trybie umieszczasz kamerę w określonym miejscu, przypisujesz kierunek, aby określić kierunek widoku, zmieniasz nachylenie, aby ustawić kąt widzenia, i ustawiasz poziom powiększenia.

Poniższy fragment kodu przedstawia popularne sposoby przenoszenia kamery.

private static final LatLng SYDNEY = new LatLng(-33.88, 151.21);
private static final LatLng MOUNTAIN_VIEW = new LatLng(37.4, -122.1);

private GoogleMap map;
... // Obtain the map from a SupportNavigationFragment or NavigationView.

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY, 15));

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(MOUNTAIN_VIEW)      // Sets the center of the map to Mountain View
    .zoom(17)                   // Sets the zoom
    .bearing(90)                // Sets the orientation of the camera to east
    .tilt(30)                   // Sets the tilt of the camera to 30 degrees
    .build();                   // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

Pokaż tryb opisu trasy

Ustawienie kamery w showRouteOverview pokazuje całą podróż. W przypadku podróży z wieloma miejscami docelowymi ten tryb wyświetla nieprzebytą część trasy.

// Place the camera to see the remaining route:
mNavFragment.showRouteOverview();

Ustawienie wysokiej szczegółowości

Przy włączonym ustawieniu wysokiej szczegółowości wyświetlają się dwuwymiarowe kontury budynków, gdy poziom powiększenia kamery to 19 lub więcej. Poziom powiększenia możesz zastąpić podczas nawigacji, używając obiektu FollowMyLocationOptions. Dzięki temu możesz zwiększyć poziom powiększenia na tyle, by wyświetlać dwuwymiarowe kontury budynków, gdy użytkownik będzie zbliżać się do miejsca docelowego.

Ten przykład pozwala włączyć ustawienie wysokiej szczegółowości:

  navigationView.setNavigationMapStyle(NavigationMapStyle.HIGH_DETAIL);

Ten przykład zastępuje poziom powiększenia podczas nawigacji. Poziom powiększenia jest ustawiony na 15, co jest wystarczające do wyświetlania dwuwymiarowych konturów budynków.

  googleMap.followMyLocation(
              FollowMyLocationOptions.builder(CameraPerspective.TILTED)
                      .setZoomLevel(15.0f)
                      .build());

Następny krok

W sekcji Dostosowywanie interfejsu nawigacji znajdziesz informacje o tym, jak dostosować sposób, w jaki użytkownicy korzystają z mapy, określając, które z wbudowanych komponentów UI pojawią się na mapie.