Mobility 주문형 이동 서비스의 일환으로 주변 차량을 찾을 수 있습니다.
SearchVehicles
메서드를 사용하면 됩니다.
SearchVehicles
메서드를 사용하면
특정 차량 공유 또는 배달에 가장 적합한 소비자 모바일 앱을
합니다. SearchVehicles
API는 다음 차량의 순위 목록을 반환합니다.
요청된 여정 속성과 일치합니다. 광고 순위는
도착예정시간, 거리 또는 승차 지점으로부터의 직선 거리 중에서 선택할 수 있습니다.
속성 검색 | 차량 속성 |
---|---|
|
|
SearchVehicles
메서드 사용
SearchVehicles
를 사용하려면 다음과 같은 일반적인 절차를 따르세요.
- 할당할 이동을 기반으로
SearchVehiclesRequest
를 구성합니다. - 다음을 사용하여
SearchVehicles
API (vehicleService.searchVehicles
)를 호출합니다. 생성할 수 있습니다. - API에서 반환된
SearchVehicleResponse
를 처리합니다.
SearchVehiclesRequest 필드
다음 필수 속성 필드를 사용하여
SearchVehiclesRequest
:
필드 | 설명 |
---|---|
parent | 필수사항: provider/{provider} 형식이어야 합니다. 제공업체는 이 호출을 하는 서비스 계정이 구성원인 Google Cloud 프로젝트의 프로젝트 ID여야 합니다. |
vehicle_types | 필수사항: 요청된 차량 유형(자동, TWO_WHEELER, 택시, 트럭, 자전거, 보행자) |
trip_types | 필수사항: EXCLUSIVE (운전자 1명당 한 번에 한 개의 활성화된 이동) 또는 SHARED (운전자당 한 번에 1회 또는 복수의 이동)입니다. |
minimum_capacity | 필수사항: 승객 또는 배달을 위한 새 이동에서 차량의 최소 잔여 수하물입니다. |
pickup_point | 필수사항: 위도/경도 좌표로 표시되는 이동의 승차 위치입니다. |
dropoff_point | 선택사항입니다. 위도/경도 좌표로 표시되는 이동의 하차 위치입니다. trip_types에 TripType.SHARED가 포함된 경우 필수 입력란입니다. |
pickup_radius_meters | 필수사항: 승차 지점에서 차량 검색 영역의 반경입니다(미터 단위). |
order_by | 필수사항: 다음 중 한 가지 방법으로 차량을 주문합니다.
|
개수 | 필수사항: 1에서 50까지 반환할 최대 차량 수입니다. |
필터 | 선택사항. 차량을 검색할 때 적용할 필터 쿼리입니다. |
자세한 내용은 참조 문서를 확인하세요. SearchVehicleRequest 필드
SearchVehiclesRequest 시나리오
이 섹션에서는 SearchVehiclesRequest
를 구성하는 방법의 예를 보여줍니다.
예를 들어 고객이 RestaurantX에서 픽업을 원한다고 가정해 보겠습니다. 그리고 네 대의 차량이 있습니다.
- 차량 1: RestaurantX에서 3,500m 떨어진 거리에 있습니다.
- 차량 2: RestaurantX에서 100m 거리, 픽업 서비스 진행 중 위치 A와 B에서 하차합니다.
- 차량 3: RestaurantX에서 200m 떨어진 곳의 하차가 1회 남음 멀리 떨어져 있기 때문이죠.
- 차량 4: RestaurantX에서 1,000m 떨어진 거리에 있습니다.
다음은 반환하는 차량의 다양한 요청을 표시합니다.
차량 4 반환
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
차량 3 및 4 반환
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
차량 2, 3, 4 반환
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
SearchVehiclesResponse 필드
SearchVehiclesResponse
는 순위가 지정된 VehicleMatch
항목의 목록으로 구성됩니다.
SearchVehiclesRequest
에서 지정된 order_by 속성으로 배송됩니다. 각
VehicleMatch
항목에는 다음과 같은 필드가 있습니다.
필드 | 설명 |
---|---|
차량 | 차량_ID 및 Vehicle 속성이 포함된 Vehicle 객체 |
vehicle_pickup_eta | 새 여정의 승차 위치에 있는 차량의 예상 도착시간입니다. 운전 도착예정시간입니다. |
vehicle_pickup_distance_meter | 차량과 새 경로의 승차 위치 사이의 거리입니다(단위: 미터). |
vehicle_pickup_straight_line_distance_meter | 차량과 새 여정의 승차 위치 사이의 직선 거리(미터)입니다. |
vehicle_dropoff_eta | Timestamp 새 여정의 승차 위치에서 차량 도착예정시간을 전달합니다. ETA는 운전 중 ETA입니다. |
vehicle_trips_waypoints | 현재 차량에 할당된 활성 이동에서 승차 및 하차 지점을 포함한 나머지 경유지 목록입니다. |
vehicle_match_type | 차량의 이동 유형(EXCLUSIVE, BACK_TO_BACK, CARPOOL 또는 CARPOOL_BACK_TO_BACK)입니다. |
VehicleMatch
필드의 전체 목록은 다음을 참조하세요.
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
필터 쿼리 사용
SearchVehicles
및 ListVehicles
는 차량 속성 필터링을 지원합니다.
필터 쿼리를 사용합니다.
필터링 쿼리는 차량의 맞춤 속성에 대한 필터링만 지원합니다.
다른 필드에 사용할 수 없습니다. 다른 필드가 포함된 검색에 사용되는 경우
minimum_capacity
또는 vehicle_types
와 같은 필터링 쿼리
AND
절로 작동합니다.
예를 들어 최소 수용 인원이 6명인 차량을 검색하고
반려동물 동반 가능과 같은 attributes
를 필터링하면 기준은 반려동물 동반 가능 여부만 반환합니다.
승무원 6명 이상이 포함된 반려동물 동반 가능한 차량
필터 쿼리 구문은 AIP-160을 참고하세요. 를 참조하세요. 차량 속성을 만드는 방법에 대한 자세한 내용은 차량을 참고하세요. 차량 필드 업데이트 가이드의 속성 필드를 참고하세요.
SearchVehicles 예
다음 예는 다음을 사용하여 SearchVehicles
API를 사용하는 방법을 보여줍니다.
자바 gRPC 라이브러리.
static final String PROJECT_ID = "project-id";
VehicleServiceBlockingStub vehicleService =
VehicleService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
SearchVehiclesRequest searchVehiclesRequest = SearchVehiclesRequest.newBuilder()
.setParent(parent)
.setPickupPoint( // Grand Indonesia East Mall
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setDropoffPoint( // Balai Sidang Jkt Convention Center
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.213796).setLongitude(106.807195)))
.setPickupRadiusMeters(2000)
.setCount(10)
.setMinimumCapacity(2)
.addTripTypes(TripType.EXCLUSIVE)
.addVehicleTypes(VehicleType.newBuilder().setCategory(Category.AUTO).build())
.setCurrentTripsPresent(CurrentTripsPresent.ANY)
.setFilter("attributes.on_trip=\"false\"")
.setOrderBy(VehicleMatchOrder.PICKUP_POINT_ETA)
.build();
try {
SearchVehiclesResponse searchVehiclesResponse =
vehicleService.searchVehicles(searchVehiclesRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
List<VehicleMatch> vehicleMatches =
searchVehicleResponse.getMatchesList();
// Each VehicleMatch contains a Vehicle entity and information about the
// distance and ETA to the pickup point and drop-off point.