라우팅 요약 계산

텍스트 검색 (신규) 또는 주변 지역 검색 (신규)을 사용하여 응답에서 각 장소까지의 이동 시간과 거리를 계산하려면 다음 단계를 따르세요.

  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 객체에는 요청에 전달된 필드 목록에 의해 정의된 필드만 포함됩니다.

이 예에서는 Nearby Search 응답에서 각 장소까지의 이동 시간과 거리를 계산합니다. 이 예에서는 오스트레일리아 시드니의 레스토랑을 검색하고 위치 제한 및 경로 출발지를 동일한 위도 및 경도 좌표로 설정합니다.

// 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();
    });