Tokens de ruta

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. Quizás desees 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 los destinos configurados anteriormente. Utiliza la ubicación de partida del conductor correspondiente, así como las condiciones de la ruta y el tráfico.

Navigator.setDestinations toma los siguientes parámetros:

ParámetroDescripción
destinos La nueva lista de destinos que se establecerá.
customRoutesOptions Las opciones que se usarán para recuperar una ruta procesada previamente, en función de un token que muestra la API de Routes Preferred.
displayOptions Son 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, 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);