Selecciona la plataforma: Android iOS

Cómo configurar interrupciones en tiempo real

Las interrupciones en tiempo real son un conjunto de funciones que alertan a los usuarios sobre interrupciones a lo largo de su ruta y les permiten informar y verificar las interrupciones que encuentran. Algunos ejemplos de interrupciones incluyen accidentes automovilísticos, embotellamientos, presencia de la policía y radares de velocidad, obras en construcción, cierres de carriles y ciertas condiciones climáticas. En esta página, se explican las funciones de interrupción en tiempo real y sus opciones de configuración, incluidas las consideraciones para las apps que usan IU de navegación personalizadas.

Funciones de interrupciones en tiempo real

El SDK de Navigation incluye las siguientes funciones de interrupciones en tiempo real como parte de la experiencia de navegación principal:

Estas funciones se pueden configurar y están habilitadas de forma predeterminada. En las siguientes secciones, se proporciona más información sobre las funciones y las opciones de configuración disponibles.

Textos destacados interactivos sobre interrupciones a lo largo de las rutas

Cuando una app muestra una ruta, ya sea en una descripción general de la ruta o durante la navegación activa, las interrupciones actuales aparecen como textos destacados a lo largo de la ruta. Los textos destacados incluyen un ícono que indica el tipo de interrupción.

Textos destacados a lo largo de las rutas

Puedes controlar la visualización de textos destacados de interrupciones a lo largo de las rutas con shouldDisplayPrompts, que también controla la visualización de alertas automáticas cuando un usuario se acerca a una interrupción.

mapView.navigator.shouldDisplayPrompts = true

Cómo mostrar detalles de la interrupción cuando un usuario presiona un texto destacado

Los usuarios pueden presionar un texto destacado para mostrar una tarjeta de información con más detalles sobre la interrupción, incluido el tipo, la hora en que se informó por última vez y, en algunos casos, una opción para votar si la interrupción aún está presente. Existen dos tipos diferentes de tarjetas de información que pueden aparecer, según si el usuario está en navegación activa, y las opciones de configuración varían según cada tipo.

Tarjetas de información de texto destacado en las descripciones generales de las rutas, antes de iniciar la navegación activa

Cuando un usuario presiona un texto destacado en una descripción general de una ruta, antes de iniciar la navegación activa, aparece una tarjeta de información con más información sobre la interrupción.

Tarjeta de información general

Puedes controlar la capacidad de los usuarios de presionar textos destacados de interrupciones en los resúmenes de rutas para mostrar más información con showsIncidentCards.

mapView.settings.showsIncidentCards = true

Tarjetas de información de texto destacado durante la navegación activa

Cuando aparece un texto destacado de interrupción a lo largo de una ruta durante la navegación activa, los usuarios pueden presionarlo para mostrar una tarjeta de información con más detalles sobre la interrupción, incluido el tipo y la hora de la última vez que se informó, así como botones para votar si la interrupción aún está presente. Google procesa los votos que envían los usuarios y es posible que aparezcan en el mapa para otros usuarios de Google Maps y del SDK de Navigation, así como para determinar si se debe seguir mostrando la interrupción.

Tarjeta de información de navegación activa

Puedes controlar la visualización y la capacidad de presionar de los textos destacados de interrupciones durante la navegación activa con shouldDisplayPrompts, que también controla la visualización de textos destacados a lo largo de las rutas y la visualización de alertas automáticas cuando un usuario se acerca a una interrupción.

mapView.navigator.shouldDisplayPrompts = true

Alertas de interrupciones automatizadas con votación durante la navegación activa

Durante la navegación activa, cuando un usuario se aproxima a una interrupción a lo largo de una ruta, aparece un mensaje con información sobre la interrupción y botones para votar si la interrupción aún está presente. Google procesa los votos que envían los usuarios y es posible que aparezcan en el mapa para otros usuarios del SDK de Google Maps y Navigation, así como para determinar si se debe seguir mostrando la interrupción.

Tarjeta de información de navegación activa

Puedes configurar la visualización de mensajes de alerta durante la navegación activa con shouldDisplayPrompts, que también controla la visualización de textos destacados a lo largo de las rutas.

mapView.navigator.shouldDisplayPrompts = true

Informes de interrupciones durante la navegación activa

Durante el modo de navegación activa, aparece un botón en la IU de navegación que permite a los usuarios informar interrupciones nuevas a lo largo de su ruta. Cuando un usuario presiona el botón, aparece un menú con los tipos de interrupciones disponibles para informar. Google procesa los informes que envían los usuarios y es posible que aparezcan en el mapa para otros usuarios del SDK de Google Maps y Navigation.

Botón de informes Menú Informes

Puedes configurar la visibilidad del botón de informes durante la navegación activa con navigationReportIncidentButtonEnabled.

// Enables the incident reporting FAB to show in situations where incident
// reporting is possible.
mapView.settings.navigationReportIncidentButtonEnabled = true

Cómo trabajar con IUs de navegación personalizadas

Si tu implementación del SDK de Navigation incluye elementos de IU personalizados, debes tener en cuenta los elementos de interrupción en tiempo real para evitar conflictos.

Posicionamiento del botón de informes

De forma predeterminada, el botón de informes de interrupciones se encuentra en la esquina inferior o final del mapa, en el lado derecho para los idiomas que se leen de izquierda a derecha y en el lado izquierdo para los idiomas que se leen de derecha a izquierda. Si necesitas mover el botón de informes para dejar espacio para elementos de IU personalizados, usa un bottomTrailingButtonsLayoutGuide.

Swift

// Create a new layout guide
let topRightLayoutGuide = UILayoutGuide()
self.view.addLayoutGuide(topRightLayoutGuide)

// Activate constraints using fixed constants here as an example
// assuming the current reporting button is of fixed height
topRightLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 50).isActive = true
topRightLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -14).isActive = true

// Assign the layout guide
_mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide

// Create an alternate layout guide to use when the header and the footer are not full width
let topRightAlternateLayoutGuide = UILayoutGuide()
self.view.addLayoutGuide(topRightAlternateLayoutGuide)

// Activate constraints using fixed constants here as an example
// assuming the current RTD button is of fixed height
topRightAlternateLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 20).isActive = true
topRightAlternateLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true

// Assign the layout guide
_mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide

Objective-C

// Create a new layout guide
UILayoutGuide *topRightLayoutGuide = [[UILayoutGuide alloc] init];
[self.view addLayoutGuide:topRightLayoutGuide];

// Activate constraints using fixed constants here as an example
// assuming the current RTD button is of fixed height
[[topRightLayoutGuide.topAnchor
    constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor
                   constant:50]
    setActive:YES];

[[topRightLayoutGuide.trailingAnchor
    constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor
                   constant:-14]
    setActive:YES];

// Assign the layout guide
_mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide;

// Create an alternate layout guide to use when the header and the footer are not full width
UILayoutGuide *topRightAlternateLayoutGuide = [[UILayoutGuide alloc] init];
[self.view addLayoutGuide:topRightAlternateLayoutGuide];

// Activate constraints using fixed constants here as an example
// assuming the current RTD button is of fixed height
[[topRightAlternateLayoutGuide.topAnchor
    constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor
                   constant:50]
    setActive:YES];

[[topRightAlternateLayoutGuide.trailingAnchor
    constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor
                   constant:-14]
    setActive:YES];

// Assign the layout guide
_mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide;

API de Prompt Visibility (experimental)

La API de Prompt Visibility te ayuda a evitar conflictos entre los elementos de la IU que genera el SDK de Navigation y tus propios elementos de IU personalizados, ya que agrega un objeto de escucha para recibir una devolución de llamada antes de que aparezca un elemento de la IU del SDK de Navigation y en cuanto se quite. Puedes recibir callbacks para elementos de interrupción en tiempo real, incluidas las tarjetas de información, las instrucciones y el menú de informes de interrupciones, así como para otras notificaciones que genera el SDK de Navigation.

Swift

// Additional methods added to GMSNavigatorListener
...
func navigatorWillPresentPrompt(_ navigator: GMSNavigator) {
  // Hide any sort of custom UI element.
}

func navigatorDidDismissPrompt(_ navigator: GMSNavigator) {
  // Show any sort of custom UI element.
}
...

Objective-C

// Additional methods added to GMSNavigatorListener
...
- (void)navigatorWillPresentPrompt:(GMSNavigator *)navigator {
  // Hide any sort of custom UI element.
}

- (void)navigatorDidDismissPrompt:(GMSNavigator *)navigator {
  // Show any sort of custom UI element.
}
...