Рассчитать сводку маршрутизации

Чтобы использовать текстовый поиск (новое) или поиск поблизости (новое) для расчета продолжительности поездки и расстояния до каждого места в ответе:

  1. Передайте параметр RoutingParameters в запросе, используя setOrigin() чтобы указать координаты широты и долготы источника маршрутизации. Этот параметр необходим для расчета длительности и расстояния до каждого места ответа.

  2. При создании объекта запроса добавьте .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 содержит только поля, определенные списком полей, переданным в запросе.

Вам не обязательно использовать одни и те же координаты для ограничения местоположения и начала маршрута. Например, вы устанавливаете ограничение местоположения по центральной точке Сиднея, чтобы ограничить результаты поиска этим кругом. Но затем вы устанавливаете начало маршрута в координатах вашего дома, то есть в другом месте в круге поиска. Затем запрос ограничивает результаты поиска кругом и рассчитывает сводные данные о маршруте на основе местоположения вашего дома.

Укажите варианты поездки

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

В следующем примере вы указываете режим движения 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();
    });