Cuando estés determinando la mejor ruta para un viaje compartido, es posible que la ruta más rápida no siempre sea la mejor opción. Es posible que quieras
personalizar tu ruta. La API de Routes Preferred te permite personalizar una ruta especificando un objetivo de ruta con el método ComputeCustomRoutes
.
Cuando creas una ruta personalizada, la API de Routes Preferred genera un token de ruta. Luego, puedes pasar el token al SDK de Navigation para Android y recuperar la ruta personalizada.
Para obtener más información sobre cómo crear una ruta personalizada, consulta Crea rutas personalizadas.
Recupera una ruta personalizada
Para recuperar una ruta personalizada, pasa un token de ruta al
SDK de Navigation para Android con el método Navigator.setDestinations
.
setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);
La ruta personalizada anula cualquier destino configurado con anterioridad. Usa la ubicación de partida del conductor correspondiente y las condiciones de la ruta y del tráfico.
Navigator.setDestinations
toma los siguientes parámetros:
Parámetro | Descripción |
---|---|
destinos | La nueva lista de destinos que se establecerá |
customRoutesOptions | Las opciones que se usarán para recuperar una ruta calculada previamente, en función de un token que devuelve la API de Routes Preferred. |
displayOptions | Las opciones que se utilizarán para mostrar la ruta. |
El método Navigator.setDestinations
muestra el estado de la solicitud.
Si se encuentra una ruta desde la ubicación del usuario hasta el destino determinado, se muestra RouteStatus.OK
.
Ejemplo
En el siguiente ejemplo de código, se muestra cómo recuperar una ruta personalizada.
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 RoutesPreferred API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
.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);