Ajustar la cámara

La cámara te permite cambiar el punto de vista del usuario en el mapa. Puedes usar los modos de la cámara para controlar el comportamiento de la vista de mapa durante la navegación. Para configurar el modo de la cámara, llama a uno de los siguientes métodos asociados con ella:

  • Seguir mi ubicación (GoogleMap.followMyLocation): Es el modo de cámara predeterminado para la navegación. Este modo establece la cámara en el dispositivo o vehículo. Durante la navegación, la cámara se orienta automáticamente en la dirección del recorrido. Si habilitas el parámetro de configuración de detalles altos (NavigationMapStyle.HIGH_DETAIL), se mostrarán contornos de edificios en 2D cuando el nivel de zoom sea de 19 o superior.

  • Fijada en la ubicación (GoogleMap.animateCamera y GoogleMap.moveCamera): Corrige la cámara en una ubicación específica. Cuando usas este modo, puedes configurar la ubicación de la cámara junto con otras propiedades, como el rumbo, la inclinación, el zoom, etc. Cuando se selecciona esta vista y se inicializa Navigator, aparece el botón Volver a centrar.

  • Mostrar descripción general de la ruta (NavigationView.showRouteOverview o SupportNavigationFragment.showRouteOverview): Muestra una descripción general de la ruta restante, el desplazamiento lateral y el zoom según sea necesario para que la ruta se ajuste a la vista de mapa. Cuando se selecciona esta vista, se muestra el botón Volver a centrar.

Haz clic en el botón Volver a centrar para configurar la cámara en el modo followMyLocation.

Seguir mi modo de ubicación

El parámetro de configuración más común de la cámara consiste en configurar la cámara en el dispositivo o en el vehículo y mostrar su posición actual dentro del recorrido. En este modo de cámara, puedes ver la ruta con el vehículo siempre hacia arriba en la pantalla con una perspectiva en ángulo (CameraPerspective.TILTED), o bien puedes ver cómo avanza con el norte (CameraPerspective.TOP_DOWN_NORTH_UP) o con orientación (CameraPerspective.TOP_DOWN_HEADING_UP) siempre en la parte superior de la pantalla).

En el siguiente fragmento de código, se usa la perspectiva TILTED:

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

Fijado en el modo de ubicación

El modo Pinned te proporciona el mayor control posible de la cámara. En este modo, debes colocar la cámara en una ubicación específica, asignar un rumbo para orientar la vista de la cámara, cambiar la inclinación a fin de ajustar el ángulo de visión y establecer el nivel de zoom de la cámara.

En el siguiente fragmento de código, se muestran algunas de las formas comunes de mover la cámara.

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));

Mostrar modo de descripción general de la ruta

El parámetro de configuración de la cámara showRouteOverview muestra todo el recorrido. En el caso de viajes con varios destinos, este modo muestra la parte no viajada de la ruta.

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

Configuración de alto detalle

Si el parámetro de configuración de detalles altos está habilitado, se muestran contornos de edificios en 2D cuando el nivel de zoom de la cámara se establece en 19 o más. Puedes anular el nivel de zoom durante la navegación con un objeto FollowMyLocationOptions. De esta manera, puedes aumentar el nivel de zoom lo suficiente como para mostrar contornos de edificios en 2D a medida que el usuario se acerca a su destino.

En este ejemplo, se habilita la configuración de alto nivel de detalles:

  navigationView.setNavigationMapStyle(NavigationMapStyle.HIGH_DETAIL);

En el siguiente ejemplo, se anula el nivel de zoom de la cámara durante la navegación. El nivel de zoom está establecido en 15, que es lo suficientemente alto para mostrar contornos de edificios en 2D.

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

Próximo paso

Consulta Cómo personalizar la IU de Navigation para obtener información sobre cómo personalizar la forma en que los usuarios interactúan con tu mapa. Para ello, debes determinar qué componentes integrados de la IU aparecerán en el mapa.