A veces, es posible que desees planificar la ruta que tu app proporciona a los usuarios. Con un token de ruta de la API de Routes, la API de Routes Preferred o la API de Route Optimization pueden te ayuda a especificar dos cosas para la ruta planificada:
Una polilínea para la ruta
Tus objetivos de ruta
Por ejemplo, estos son algunos ejemplos de objetivos de enrutamiento que podrías tener:
Minimiza el tiempo de entrega: Es posible que una empresa que entrega comida quiera minimizar el tiempo que tarda en hacerlo.
Minimizar el tiempo de viaje o el consumo de combustible: Una empresa de logística podría quieren mejorar la eficiencia de sus conductores y reducir los costos de combustible.
Minimizar el tiempo hasta el destino: Una operación de despacho de servicios podría querer y minimizan el tiempo que tardan los operadores en llegar a una solicitud de trabajo.
Reducir los costos y mejorar la seguridad: Una empresa de transporte privado con conductor podría querer encuentra una ruta que les cueste menos a los pasajeros y evite ciertas áreas por seguridad y otras razones.
Para obtener más información sobre cómo planificar una ruta con un token de ruta, consulta Solicitar un token de ruta en API de Routes y polilíneas de transición y rutas Tokens en API de Route Optimization.
Por qué usar un token de ruta para los objetivos de ruta
Con un token de ruta de la API de Routes, la API de Routes Preferred o la API de Route Optimization, tener más control sobre la ruta proporcionada:
Planifica una ruta con anticipación para que la use el SDK de Navigation cuando como sea posible.
Elige la mejor ruta para que el SDK de Navigation la use. Si solicitas tokens de ruta cuando generas rutas en la API de Routes, obtienes un token de ruta para cada ruta generada. Luego, puedes elegir el token de la ruta que deseas usar cuando lo pases al SDK de Navigation.
Estima el precio por adelantado, incluidas las estimaciones de la hora de llegada estimada y distancia. Si bien el costo y el tiempo reales pueden variar, esta estimación reduce la brecha entre el costo esperado y el real de la ruta.
Especifica objetivos de ruta más avanzados, como rutas ecológicas o la ruta más corta.
Cómo funcionan los tokens de ruta
Puedes usar la API de Routes, la API de Routes Preferred o La API de Route Optimization para planificar una ruta usando objetivos de ruta Tú puede pasar un token de ruta devuelto por cualquiera de estas APIs al SDK de Navigation para guiarte sobre cómo enruta tu vehículo.
Esto es lo que sucede cuando solicitas y usas un token de ruta:
La API de Routes, la API de Routes Preferred o La API de Route Optimization muestra un token de ruta encriptado que incluye la polilínea de la ruta y los objetivos de la ruta.
Debes pasar el token de ruta al SDK de Navigation.
El SDK de Navigation recupera la ruta o, si no está disponible debido a condiciones cambiantes, recupera la ruta que mejor coincida.
Mientras conduces, si el tráfico o el estado de la ruta cambian, o si una el vehículo se desvía de la ruta planificada, las rutas modificadas continuamente intenta hacer coincidir la mejor ruta según los objetivos de ruta en el token.
Con este proceso, se maximiza qué tan cerca se encuentra la ruta real de la ruta planificada.
Por qué es posible que no se siga exactamente una ruta planificada
Piensa en tu ruta planificada y en los objetivos de la ruta como lineamientos que debes seguir: no son prescriptivos. Es posible que veas una diferencia entre la ruta planificada y la ruta que proporciona la navegación guiada debido a diferencias en las condiciones de la ruta, la ubicación de partida o en otros parámetros que cambiaron desde que creaste la ruta planificada. Esta diferencia puede generar una discrepancia entre los objetivos planificados y reales de distancia y hora de llegada estimada, entre otras cualidades importantes del viaje.
Planifica una ruta con un token de ruta
Para planificar una ruta, crea un token de ruta y pásalo al SDK de Navigation, como se describe en los siguientes pasos:
Paso 1: Crea un token de ruta con la API de Routes, la API de Routes Preferred o la API de Route Optimization
Solicita un token de ruta con uno de los siguientes métodos:
API de Routes:
computeRoutes
. Más información sobre cómo solicitar un token de ruta en la API de Routes, consulta Calcula una ruta y Solicita una ruta token.API de Routes Preferred:
computeCustomRoutes
Para obtener más información sobre cómo solicitar un token de ruta en la API de Routes Preferred, consulta Cómo planificar una ruta.API de optimización de rutas:
optimizeTours
obatchOptimizeTours
Para obtener más información sobre cómo solicitar un token de ruta en la API de Route Optimization, consulta Polilíneas de transición y tokens de ruta.
Configura la API de Routes o la API de Routes Preferred request para cumplir con los requisitos para usar un token de ruta:
- Establece
travel_mode
enDRIVING
oTWO_WHEELER
. - Establece
routing_preference
comoTRAFFIC_AWARE
oTRAFFIC_AWARE_OPTIMAL
- NO usar puntos de referencia de
Via
- Establece
Paso 2: Pasa el token de ruta al SDK de Navigation
Almacena el token de ruta: En el SDK de Navigation, configura una cadena para almacenar el token de ruta. Por ejemplo:
String routeToken = "route token returned by Routes API";
Ejemplo de un token de ruta que se muestra:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
Pasa el token de ruta al SDK de Navigation con el método
Navigator.setDestinations
y especifica los mismos puntos de destino que usaste cuando creaste el token de ruta:setDestinations(List
destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); Por ejemplo:
CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .setTravelMode(TravelMode.DRIVING) .build();
El método Navigator.setDestinations
muestra el estado de la solicitud. Si encuentra una ruta desde la ubicación del vehículo hasta el destino determinado, muestra RouteStatus.OK
.
Para obtener más información sobre este método, consulta
Navigator.setDestinations
Ejemplo
En el siguiente ejemplo de código, se muestra cómo especificar una ruta planificada con un token de ruta.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by Routes API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(TravelMode.DRIVING)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
Cómo interactúan los tokens de ruta y el SDK de Navigation
A continuación, se muestra cómo interactúan la ruta generada por el SDK de Navigation y la ruta planificada en el token de ruta:
Anula cualquier destino configurado anteriormente.
Usa la ubicación de partida del vehículo.
Se ajusta a las condiciones de la ruta y del tráfico. Consulta Por qué es posible que no se siga exactamente una ruta planificada.
Ignora las siguientes opciones relacionadas con el enrutamiento como innecesarias:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
Siguiendo:
Opciones relacionadas con los puntos de referencia, como la preferencia de ruta al costado de la ruta.
Objetivos de la ruta. Si el SDK de Navigation tiene que ajustar la ruta que se muestra, usa los objetivos de ruta que especificaste cuando solicitaste el token de ruta. Por este motivo, debes usar el mismo opciones relacionadas con puntos de referencia que especificaste en la API de Routes.