Жетоны маршрута

Когда вы определяете лучший маршрут для совместного путешествия, самый быстрый маршрут не всегда может быть лучшим вариантом. Возможно, вы захотите настроить свой маршрут. API-интерфейс Routes Preferred позволяет настроить маршрут, указав цель маршрута с помощью метода ComputeCustomRoutes .

Когда вы создаете собственный маршрут, API-интерфейс Routes Preferred API генерирует токен маршрута. Затем вы можете передать токен в Navigation SDK для Android и получить собственный маршрут.

Дополнительную информацию о создании пользовательского маршрута см. в разделе Создание пользовательских маршрутов .

Получение пользовательского маршрута

Вы можете получить собственный маршрут, передав токен маршрута в Navigation SDK для Android с помощью метода Navigator.setDestinations .

setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

Пользовательский маршрут переопределяет любые ранее установленные пункты назначения. Он использует соответствующее стартовое местоположение водителя, а также дорожные и транспортные условия.

Navigator.setDestinations принимает следующие параметры:

Параметр Описание
направления Новый список адресатов, который необходимо настроить.
CustomRoutesOptions Параметры, которые будут использоваться для получения предварительно рассчитанного маршрута на основе токена, возвращаемого API-интерфейсом Routes Preferred.
Показать варианты Параметры, которые будут использоваться для отображения маршрута.

Метод Navigator.setDestinations возвращает статус запроса. Если найден маршрут от местоположения пользователя до заданного пункта назначения, он возвращает RouteStatus.OK .

Пример

В следующем примере кода показано, как получить настраиваемый маршрут.

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);