A quién está dirigida esta guía: Lee esta guía si eres un desarrollador de aplicaciones para dispositivos móviles responsable de crear la experiencia de navegación paso a paso para conductores de camiones, autobuses o cualquier otro vehículo comercial grande.
Qué abarca esta guía: En esta guía, se explica cómo tomar una ruta específica para camiones generada por la API de Routes o la API de Route Optimization y usarla para potenciar una sesión de navegación paso a paso con el SDK de Navigation para Android.
Qué aprenderás
Aprenderás a realizar las siguientes tareas:
- Usar un
routeTokenpara conectar la planificación de rutas de backend con la experiencia de navegación en la app - Configurar el SDK de Navigation para usar una ruta de camiones planificada previamente
- Comprender cómo aparecen las restricciones específicas para camiones al conductor en la IU de navegación
Requisitos previos
Antes de comenzar, asegúrate de cumplir con los siguientes requisitos:
1. Solicita acceso para tu proyecto
El enrutamiento de vehículos grandes está disponible para un grupo limitado de clientes. Para expresar tu interés y solicitar acceso a tu proyecto de Google Cloud, completa el formulario de contacto. Un representante de Google se comunicará contigo para indicarte los próximos pasos.
Una vez que Google otorgue acceso, asegúrate de que tu proyecto de Google Cloud esté aprovisionado para el enrutamiento de vehículos grandes.
Si tu organización usa proyectos de Google Cloud separados para las APIs de enrutamiento de backend y el SDK de Navigation para dispositivos móviles, comunícate con Google para aprovisionar cada proyecto.
2. Configura la generación de rutas de backend y obtén un token de ruta
Antes de iniciar la navegación en el dispositivo, tu servidor de backend debe generar una ruta de camiones y obtener un routeToken con una de las siguientes APIs:
- API de Routes: Se recomienda para calcular rutas de camiones individuales entre orígenes y destinos. Para obtener instrucciones de configuración, consulta Genera rutas y ETAs para vehículos grandes.
- API de Route Optimization: Se recomienda para optimizar rutas con varias paradas en una flota. Para obtener más información, consulta la guía de enrutamiento de vehículos grandes de la API de Route Optimization.
Tu solicitud de backend debe especificar travelMode: TRUCK junto con los atributos físicos del vehículo (altura, ancho, longitud, peso, cantidad de ejes y carga de materiales peligrosos). La API de enrutamiento muestra un routeToken en su respuesta, que tu servidor de backend pasa a tu app para dispositivos móviles.
3. Cumple con los requisitos mínimos del SDK y del sistema
Tu app debe usar la versión mínima requerida del SDK de Navigation 5.2.0 o una posterior.Además, tu proyecto debe cumplir con los requisitos de configuración estándar del SDK de Navigation.
Limitaciones y lineamientos operativos
Antes de comenzar, ten en cuenta las siguientes limitaciones y lineamientos operativos:
- Disponibilidad geográfica: El enrutamiento de vehículos grandes está disponible en los 48 estados contiguos de Estados Unidos (disponibilidad general) y Japón (experimental). No está disponible en Alaska, Hawái ni en los territorios estadounidenses.
- Advertencias y seguridad para el conductor: Los conductores no deben depender únicamente de las rutas que muestra el SDK de Navigation para que sean seguras o legales. Es posible que las rutas no sean adecuadas para el vehículo en todas las condiciones de la ruta, y seguirlas podría exponer a los conductores a peligros, como espacios libres bajos o rutas con restricciones de peso. Los conductores deben permanecer siempre alertas y obedecer las señales de tránsito publicadas y las reglamentaciones locales.
- Rutas de mejor esfuerzo: Cuando la API de enrutamiento no puede encontrar una ruta que cumpla por completo
con las restricciones del vehículo, muestra una ruta de "mejor esfuerzo" que
aún puede atravesar segmentos restringidos. Por ejemplo, la API de Routes establece la marca
routeRestrictionsPartiallyIgnoreden su respuesta. Cuando se navega por estas rutas, el SDK de Navigation muestra textos destacados de la ruta para resaltar las restricciones pertinentes. En estos casos, planifica las rutas con cuidado y no uses una ruta marcada como una única fuente de información para la planificación o la navegación. - Funciones no admitidas: El enrutamiento de vehículos grandes no admite las
siguientes funciones:
- Precios de peajes para camiones
- Límites de velocidad específicos para camiones o vehículos pesados
- Enrutamiento para materiales peligrosos radiactivos
- Límites de uso: Las solicitudes realizadas al SDK de Navigation siguen los límites de uso y cuota estándar. Para obtener más información, consulta Uso y facturación.
Muestra la IU específica para camiones (textos destacados de la ruta)
El SDK de Navigation muestra automáticamente advertencias visuales, llamadas textos destacados de la ruta, en el mapa para alertar a los conductores sobre las próximas restricciones para camiones. Los textos destacados aparecen para las restricciones que se producen a lo largo de la ruta planificada, pero no se muestran en otras rutas cercanas.
El SDK de Navigation incluye textos destacados para las siguientes restricciones:
| Restricción | Ícono y texto destacado | Condiciones para la visualización |
|---|---|---|
| Altura |
Amarillo = advertencia, tu vehículo está cerca de la altura máxima permitida
Rojo = tu vehículo supera la altura máxima permitida |
Aparece un texto destacado amarillo cuando la altura del vehículo está cerca de la restricción.
Aparece un texto destacado rojo si la ruta no cumple con los requisitos y viola una restricción de altura.
|
| Peso |
|
Aparece un texto destacado rojo cuando el peso del vehículo
supera el límite de la ruta.
|
| Camiones prohibidos |
|
Aparece un texto destacado rojo cuando se viaja por un segmento de ruta
con una restricción para camiones comerciales.
|
| Bienes peligrosos |
|
Aparece un texto destacado rojo cuando la carga de materiales peligrosos del vehículo está prohibida en un segmento de ruta.
|
Cómo funcionan los tokens de ruta
Un routeToken es una instantánea encriptada de una ruta creada por el backend de enrutamiento de Google. Encapsula la geometría de la ruta planificada, así como las dimensiones físicas del vehículo y el perfil de restricción.
El flujo de trabajo sigue estos pasos:
- Solicita la ruta: Tu servidor de backend solicita una ruta de camiones a la API de Routes (o a la API de Route Optimization).
- Recibe el token: La API de enrutamiento calcula la ruta compatible y
muestra un
routeTokena tu servidor de backend. - Reenvía el token: Tu servidor de backend pasa el
routeTokeny las coordenadas de destino a tu app para dispositivos móviles. - Pasa al SDK: La app para dispositivos móviles pasa el
routeTokenal SDK de Navigation. - Inicia la guía: El SDK de Navigation controla todos los aspectos de la experiencia paso a paso, incluido el procesamiento de textos destacados de la ruta y el control del cambio de ruta dinámico según las restricciones del vehículo.
Recálculos y cambios de ruta dinámicos
Durante la navegación activa, las condiciones del tráfico, los cierres de rutas o los giros perdidos pueden hacer que el vehículo se desvíe de la ruta planificada.
Cuando se produce un cambio de ruta:
- El SDK de Navigation vuelve a calcular automáticamente la ruta al destino.
- El SDK conserva los atributos y las dimensiones del vehículo codificados en el
routeTokenoriginal. - La ruta recién recalculada evita los espacios libres bajos, los puentes con límite de peso y las rutas prohibidas para camiones comerciales.
Implementación: Inicia un viaje específico para camiones
Sigue estos pasos para inicializar y comenzar la navegación paso a paso con un token de ruta de vehículo grande.
Paso 1: Obtén el token de ruta de tu backend
Tu app para dispositivos móviles recibe la cadena routeToken junto con las coordenadas de destino de tu servidor de backend. Para obtener detalles sobre cómo generar este
token en tu servidor, consulta Genera rutas y ETAs para vehículos grandes
en la documentación de la API de Routes.
El siguiente código es un ejemplo de token de ruta:
{
"routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}
Paso 2: Configura CustomRoutesOptions
Pasa el token de ruta a una instancia de CustomRoutesOptions con
CustomRoutesOptions.builder:
- Pasa el token con
setRouteToken(routeToken). - Establece el modo de viaje con
setTravelMode(CustomRoutesOptions.TravelMode.DRIVING).
Paso 3: Define los puntos de referencia y establece los destinos
Pasa tus puntos de referencia de destino y CustomRoutesOptions a navigator.setDestinations.
Cuando configures los puntos de referencia y pases las opciones de ruta personalizadas, ten en cuenta las siguientes consideraciones:
- Requisito de coincidencia de destino: Las coordenadas de destino que se pasan a
setDestinationsdeben coincidir con las coordenadas de destino que se usan cuando se genera elrouteToken. Si especificas un destino diferente, se produce un error. - Enrutamiento del lado de la ruta: Los vehículos comerciales grandes no pueden hacer
giros en U fácilmente en calles estrechas. Para asegurarte de que el camión se acerque al destino en el lado correcto de la ruta, llama a
setPreferSameSideOfRoad(true)en tus puntos de referencia. - Paradas de vehículos: Para guiar el camión a una ubicación adecuada para
detenerse o descargar, llama a
setVehicleStopover(true)en tus puntos de referencia. - Puntos de navegación: Si tu destino tiene una entrada de carga designada o un muelle de carga, especifícalo con un token de punto de navegación.
Paso 4: Controla el estado de la ruta y comienza la guía
Registra un OnResultListener en el
ListenableResultFuture<Navigator.RouteStatus>. Cuando el estado de la ruta sea OK, llama a navigator.startGuidance para iniciar la navegación paso a paso activa.
Ejemplo de código
Usa CustomRoutesOptions.builder para establecer el token y, luego, pasarlo a navigator.setDestinations.
// Obtain the routeToken string from your backend
val routeToken = "route token returned by Routes API"
val customRoutesOptions = CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build()
// Specify the same destination used to create the route token
ArrayList <Waypoint> destinations = Lists.newArrayList();
val destination = Waypoint.builder()
.setLatLng(10.0, 20.0)
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(destination);
navigator.setDestinations(destinations, customRoutesOptions)
Pantallas en el vehículo
Puedes proyectar la sesión de navegación de vehículos grandes en pantallas integradas con Navigation para Android Auto.Próximos pasos
- Modifica la IU de navegación: Personaliza los controles de la IU integrados y los elementos visuales, como la brújula, el botón para volver a centrar y la perspectiva de la cámara.
- Detecta eventos de navegación: Controla las actualizaciones de navegación y los eventos del ciclo de vida, como el progreso de la ruta, los cambios en la ETA y los cambios de ruta.