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. 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ámetroDescripció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);