Когда вы определяете лучший маршрут для совместного путешествия, самый быстрый маршрут не всегда может быть лучшим вариантом. Возможно, вы захотите настроить свой маршрут. 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);