Рассчитать сводку маршрутизации
Чтобы использовать текстовый поиск (новое) или поиск поблизости (новое) для расчета продолжительности поездки и расстояния до каждого места в ответе:
Передайте параметр
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(); });