Рассчитать сводку маршрутизации
Чтобы использовать текстовый поиск (новая функция) или поиск поблизости (новая функция) для расчета продолжительности поездки и расстояния до каждого места в ответе:
Передайте параметр
RoutingParametersв запросе, используяsetOrigin()для указания координат широты и долготы начальной точки маршрута. Этот параметр необходим для расчета продолжительности и расстояния до каждой точки в ответе.При создании объекта запроса добавьте
.setRoutingSummariesIncluded(true).
Использовать текстовый поиск (новая функция)
В следующем запросе вы рассчитываете продолжительность поездки и расстояние до каждого места в ответе текстового поиска (новый):
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
Класс SearchByTextResponse представляет собой ответ на поисковый запрос. Вы можете вызвать метод SearchByTextResponse.getRoutingSummaries() чтобы получить список сводных данных маршрутизации. Объект SearchByTextResponse также содержит:
- Список объектов
Place, представляющих все соответствующие места, по одному объектуPlaceна каждое соответствующее место. - Каждый объект
Placeсодержит только поля, определенные списком полей, переданным в запросе.
Воспользуйтесь поиском поблизости
В этом примере вы рассчитываете продолжительность поездки и расстояние до каждого места в ответе поиска поблизости. В этом примере выполняется поиск ресторанов в Сиднее, Австралия, и устанавливается ограничение по местоположению, а также начальная точка маршрута на одних и тех же координатах широты и долготы:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the search area as a 500 meter diameter circle in Sydney, Australia. LatLng center = new LatLng(-33.8688, 151.1957362); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 500); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchNearbyRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchNearby() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
Класс SearchNearbyResponse представляет собой ответ на поисковый запрос. Вы можете вызвать метод SearchNearbyResponse.getRoutingSummaries() чтобы получить список сводных данных о маршрутизации. Объект SearchNearbyResponse также содержит:
- Список объектов
Place, представляющих все соответствующие места, по одному объектуPlaceна каждое соответствующее место. - Каждый объект
Placeсодержит только поля, определенные списком полей, переданным в запросе.
Необязательно использовать одни и те же координаты для ограничения местоположения и для начальной точки маршрута. Например, вы устанавливаете ограничение местоположения на центральную точку Сиднея, чтобы ограничить результаты поиска этим кругом. Но затем вы устанавливаете начальную точку маршрута на координаты вашего дома, то есть на другое местоположение внутри круга поиска. В этом случае запрос ограничивает результаты поиска кругом и вычисляет сводные данные маршрута на основе местоположения вашего дома.
Укажите варианты поездки
По умолчанию расчет продолжительности и расстояния производится для автомобиля. Однако вы можете выбрать тип транспортного средства, а также другие параметры в процессе поиска.
Используйте
routingParameters.setTravelMode(), чтобы установить режим передвижения наDRIVE,BICYCLE,WALKилиTWO_WHEELER. Дополнительную информацию об этих параметрах см. в разделе «Доступные типы транспортных средств для маршрутов» .- Используйте
routingParameters.setRoutingPreference(), чтобы установить параметр приоритета маршрутизации в значениеTRAFFIC_UNAWARE(по умолчанию),TRAFFIC_AWAREилиTRAFFIC_AWARE_OPTIMAL. Каждый параметр имеет разный уровень качества данных и задержки. Для получения дополнительной информации см . раздел «Укажите, как и следует ли включать данные о трафике» . - Используйте
routingParameters.setRouteModifiers(), чтобы указать параметрыavoidTolls,avoidHighways,avoidFerriesиavoidIndoor. Дополнительную информацию об этих параметрах см. в разделе «Указание характеристик маршрута для обхода» .
В следующем примере вы указываете режим движения как DRIVE и объезжаете автомагистрали:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing modifiers object. RouteModifiers routeModifiers = RouteModifiers.builder() .setAvoidHighways(true) .build(); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .setTravelMode(DRIVE) .setRouteModifiers(routeModifiers) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = result.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });