주문형 차량 공유 및 배송 솔루션의 일부인 경로 계획 및 전달 기능을 사용하면 SearchVehicles
API를 제공하여 근처 운전자를 찾을 수 있습니다.
SearchVehicles
API를 사용하면 차량 공유 또는 배달 요청과 같은 작업에 가장 적합한 주문형 차량 및 배달 솔루션 소비자 앱에서 이용 가능한 주변 운전자를 찾을 수 있습니다. SearchVehicles
API는 차량의 차량 속성과 작업 속성이 일치하는 드라이버 순위 목록을 반환합니다.
작업 속성에는 다음이 포함될 수 있습니다.
- 승차 및 하차 위치
- 요청된 차량 및 이동 유형
- 필요한 용량
- 기타 필수 일치 속성
차량 속성에는 다음이 포함될 수 있습니다.
- 마지막으로 알려진 차량 위치
- 차량 상태, 유형 또는 용량
- 기타 맞춤 속성
순위는 도착예정시간, 거리, 승차 지점으로부터의 직선 거리 중 선택한 항목에 따라 정렬됩니다.
SearchVehicles
API를 사용하려면 Fleet Engine 서비스 수퍼유저 또는 소비자 SDK 사용자 권한이 있어야 합니다. 자세한 내용은 인증 및 승인을 참조하세요.
SearchVehicles API 사용
SearchVehicles
API를 사용하려면 다음 안내를 따르세요.
- 할당할 작업을 기반으로
SearchVehiclesRequest
를 구성합니다. - 생성된 요청을 사용하여
SearchVehicles
API (vehicleService.searchVehicles
)를 호출합니다. - API에서 반환된
SearchVehicleResponse
를 처리합니다.
SearchVehiclesRequest 필드
다음 필수 속성 필드를 사용하여 SearchVehiclesRequest
를 구성합니다.
필드 | 설명 |
---|---|
parent | 필수사항: provider/{provider} 형식이어야 합니다. 제공업체는 호출하는 서비스 계정이 속한 Google Cloud 프로젝트의 프로젝트 ID (예: sample-cloud-project)여야 합니다. |
vehicle_types | 필수사항: 요청된 차량 유형입니다(AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE, PEDESTRIAN). |
trip_types | 필수사항: EXCLUSIVE (운전자당 한 번에 하나의 활성 이동) 또는 SHARED (운전자당 한 번에 하나 또는 여러 이동)입니다. |
minimum_capacity | 필수사항: 승객 또는 배달 등의 새 작업을 위한 차량의 최소 잔여 용량입니다. |
pickup_point | 필수사항: 작업의 승차 위치(위도/경도 좌표)입니다. |
dropoff_point | 선택사항입니다. 위도/경도 좌표로 나타낸 작업의 하차 위치입니다. trip_types에 TripType.SHARED가 포함된 경우 이 필드는 필수 항목입니다. |
pickup_radius_meters | 필수사항: 승차 지점에서 차량 검색 구역까지의 반경입니다(미터 단위). |
order_by | 필수사항: 다음 중 한 가지 차량을 주문하세요.
|
수 | 필수사항: 1~50대 반납할 수 있는 최대 차량 수입니다. |
전체 SearchVehicleRequestfields 세트를 보려면 참조 문서를 확인하세요.
SearchVehiclesRequest 예시
이 섹션에서는 SearchVehiclesRequest
를 구성하는 방법의 예를 보여줍니다.
예를 들어 RestaurantX와 4대의 차량에 할당될 승차 작업이 있다고 가정해 보겠습니다.
- Vehicle 1은 RestaurantX에서 3, 500m 거리에 있습니다.
- 차량 2: RestaurantX에서 100m 떨어져 있으며 위치 A와 B에서 승차 및 하차가 가능한 이동이 활성화되어 있습니다.
- Vehicle 3: RestaurantX에서 200m 떨어져 있으며 매우 멀리 있는 하차 지점이 하나 남아 있습니다.
- Vehicle 4는 RestaurantX에서 1, 000m 거리에 있습니다.
다음 SearchVehiclesRequest
는 차량 4를 반환합니다.
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
다음 SearchVehiclesRequest
는 차량 3과 4를 반환합니다.
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
다음 SearchVehiclesRequest
는 차량 2, 3, 4를 반환합니다.
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
SearchVehiclesResponse 필드
SearchVehiclesResponse
은 SearchVehiclesRequest
에 지정된 order_by 속성으로 순위가 지정된 VehicleMatch
항목의 목록으로 구성됩니다.
각 VehicleMatch
항목에는 다음과 같은 필드가 있습니다.
필드 | 설명 |
---|---|
차량 | Vehicle 객체(Vehicle_id 및 Vehicle 속성 포함) |
vehicle_pickup_eta | 새 작업의 픽업 위치에 있는 차량의 도착예정시간입니다. 운전 도착예정시간입니다. |
vehicle_pickup_distance_meter | 차량과 새 작업의 픽업 위치 사이의 거리(미터)입니다. |
vehicle_pickup_straight_line_distance_meter | 차량과 새 작업의 픽업 위치 사이의 직선 거리(미터)입니다. |
vehicle_dropoff_eta | 새 작업의 승차 위치에 있는 차량 도착예정시간의 타임스탬프입니다. 도착예정시간은 운전 도착예정시간입니다. |
vehicle_trips_waypoints | 현재 차량에 할당된 활성 이동의 남은 경유지(승차 및 하차 지점 포함) 목록입니다. |
vehicle_match_type | 차량의 이동 유형으로 EXCLUSIVE, BACK_TO_BACK, CARPOOL 또는 CARPOOL_BACK_TO_BACK이 될 수 있습니다. |
SearchVehicles 예
다음 예는 SearchVehicles
API를 사용하는 방법을 보여줍니다.
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.