이 문서에서는 연속 이동을 만들고, 올바른 필드를 설정하고, 이동을 처리할 차량에 할당하는 방법을 설명합니다. Fleet Engine을 설정하고, 차량을 만들고, 작동하는 드라이버 앱과 소비자 앱(선택사항)이 있다고 가정합니다. 또한 주문형 이동에 사용할 수 있는 다양한 이동 시나리오에 익숙해야 합니다. 자세한 내용은 다음 관련 가이드를 참고하세요.
- Fleet Engine 설정
- 차량 만들기
- 주문형 이동 개요의 이동 시나리오
여행 항목 만들기 기본사항
이 섹션에서는 Fleet Engine에서 이동을 만드는 데 필요한 요청 세부정보를 설명합니다. gRPC 및 REST를 사용하여 생성 요청을 실행합니다.
이동 필드
다음 필드를 사용하여 Fleet Engine에서 이동을 만듭니다. 단일 또는 다중 목적지, 연속, 공유 풀링 이동 등 다양한 유형의 이동에 서로 다른 필드를 사용할 수 있습니다. 이동을 만들 때 선택적 필드를 제공하거나 나중에 이동을 업데이트할 때 설정할 수 있습니다.
| 이름 | 필수 여부 | 설명 |
|---|---|---|
| parent | 예 | 프로젝트 ID가 포함된 문자열입니다. 이 ID는 동일한 서비스 계정 역할로 전체 Fleet Engine 통합에서 사용되는 ID와 동일해야 합니다. |
| trip_id | 예 | 이 이동을 고유하게 식별하는 문자열입니다. 이동 ID에는 참조에 표시된 대로 특정 제한사항이 있습니다. |
| trip_type | 예 | 만들려는 이동 유형에 따라 TripType을 다음 값으로 설정합니다.
|
| pickup_point | 예 | 이동의 출발지입니다. |
| 중간 목적지 | 예 | 여러 목적지 이동만 해당: 운전자가 승차와 하차 사이에 방문하는 중간 목적지 목록입니다. |
| vehicle_waypoints | 예 | 공유 풀링 이동만 해당: 이 필드는 여러 이동의 경유지를 인터리브 처리하는 것을 지원합니다.
여기에는 할당된 차량의 나머지 모든 경유지와 이 이동의 승차 및 하차 경유지가 포함됩니다. |
| number_of_passengers | 아니요 | 이동에 탑승한 승객 수입니다. |
| dropoff_point | 아니요 | 이동의 목적지입니다. |
| vehicle_id | 아니요 | 이동에 할당된 차량의 ID입니다. |
예: 연속 이동 만들기
다음은 연속 이동을 만들고 차량에 할당하는 방법을 보여줍니다. 이 시나리오에서 이동 항목 만들기는 단일 목적지 이동과 동일합니다. 나중에 다른 이동을 만들고 이미 활성 상태인 이동이 있는 차량에 할당합니다.
// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
Trip trip = Trip.newBuilder()
.setTripType(TripType.EXCLUSIVE)
.setPickupPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.195139).setLongitude(106.820826)))
.setDropoffPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.1275).setLongitude(106.6537)))
.setVehicleId(VEHICLE_ID)
.build();
// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
.setParent(parent)
.setTripId(TRIP_ID)
.setTrip(trip)
.build();
// Error handling.
try {
// Fleet Engine automatically assigns a 'waypoints' list to the trip containing
// the vehicle's current trip waypoints.
Trip createdTrip =
tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
연속 이동 업데이트
연속 이동에 차량을 할당하면 이미 이동이 할당된 차량에 이동을 할당합니다.
Fleet Engine에서 생성된 모든 이동은 Fleet Engine에서 이동 ETA를 계산하고 추적할 수 있도록 차량에 할당되어야 합니다. 이 작업은 이동을 만들 때 또는 나중에 이동을 업데이트할 때 수행할 수 있습니다.
차량에 이동을 할당하면 Fleet Engine은 연속 이동과 연결된 경유지를 차량의 경유지 필드에 자동으로 추가합니다. 이동의 remainingWaypoints 필드에는 이동의 하차 전에 방문할 다른 이동의 경유지를 포함한 모든 경유지 목록이 포함됩니다.
예를 들어 연속된 두 이동인 이동 A와 이동 B를 생각해 보겠습니다. 차량이 이동 A를 위해 소비자를 태웠으며, 하차 위치로 이동하는 중에 운전자가 다음 이동인 이동 B를 위해 다른 소비자를 태우라는 요청을 받습니다.
getVehicle()를 호출하면 다음을 포함하는remainingWaypoints가 반환됩니다.
A 하차 → B 승차 → B 하차getTrip()또는 이동 A의onTripRemainingWaypointsUpdated콜백은 다음을 포함하는remainingWaypoints를 반환합니다.
하차getTrip()또는 이동 B의onTripRemainingWaypointsUpdated콜백은 다음을 포함하는remainingWaypoints를 반환합니다.
A 하차 → B 승차 → B 하차