La cámara te permite cambiar el punto de vista del usuario del mapa. Puedes usar los modos de cámara para controlar el comportamiento de la vista del mapa durante la navegación. Para configurar el modo de la cámara, llama a uno de los siguientes métodos asociados con la cámara:
Seguir mi ubicación (
GoogleMap.followMyLocation
): Es el modo de cámara predeterminado para la navegación. En este modo, se configura la cámara en el dispositivo o el vehículo. Durante la navegación, la cámara se orienta automáticamente en la dirección de viaje. Cuando se habilita el parámetro de configuración de detalles altos (NavigationMapStyle.HIGH_DETAIL
), se muestran los contornos de los edificios en 2D cuando el nivel de zoom es 19 o superior.Fijado en la ubicación (
GoogleMap.animateCamera
yGoogleMap.moveCamera
): Fija 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étera. Cuando se selecciona esta vista y se inicializa el navegador, se muestra el botón Re-center.Mostrar descripción general de la ruta (
NavigationView.showRouteOverview
oSupportNavigationFragment.showRouteOverview
): Muestra una descripción general de la ruta restante, con desplazamiento y zoom según sea necesario para que la ruta se ajuste a la vista del mapa. Cuando se selecciona esta vista, se muestra el botón Re-center.
Si haces clic en el botón Re-center, la cámara se establecerá en el modo followMyLocation
.
Modo Seguir mi ubicación
La configuración más común de la cámara es que esté configurada en el dispositivo o vehículo, y muestre su posición actual en el viaje. En este modo de cámara, puedes ver la ruta con el automóvil siempre hacia arriba en la pantalla con una perspectiva en ángulo (CameraPerspective.TILTED
), o bien puedes ver el automóvil viajando hacia el norte (CameraPerspective.TOP_DOWN_NORTH_UP
) o con rumbo (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))
Modo fijado en la ubicación
El modo Pinned
te brinda el mayor control de la cámara. En este modo, colocas la cámara en una ubicación específica, le asignas un rumbo para orientar la vista de la cámara, cambias la inclinación para establecer el ángulo de visión y estableces 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));
Cómo mostrar el modo de descripción general de la ruta
La configuración de la cámara showRouteOverview
muestra todo el recorrido.
En el caso de los viajes con varios destinos, este modo muestra la parte de la ruta que no se recorrió.
// Place the camera to see the remaining route:
mNavFragment.showRouteOverview();
Configuración de alto nivel de detalle
Cuando se habilita el parámetro de configuración de detalles altos, se muestran los contornos de los edificios en 2D cuando el nivel de zoom de la cámara está configurado en 19 o superior. Puedes anular el nivel de zoom durante la navegación con un objeto FollowMyLocationOptions
. Esto te permite aumentar el nivel de zoom lo suficiente como para mostrar los contornos de los edificios en 2D a medida que el usuario se acerca a su destino.
En este ejemplo, se habilita el parámetro de configuración de alto detalle:
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 se establece en 15, que es lo suficientemente alto como para mostrar los contornos de los 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 aprender a personalizar la forma en que los usuarios interactúan con tu mapa. Para ello, determina qué componentes integrados de la IU aparecerán en el mapa.