연달아 재생되는 경로 만들기

이 문서에서는 연속된 여정을 만들고, 올바른 필드를 설정하고, 차량에 할당하여 이행하는 방법을 설명합니다. Fleet Engine을 설정하고, 차량을 만들고, 작동하는 드라이버 앱과 선택적으로 소비자 앱이 있다고 가정합니다. 또한 주문형 이동에 사용할 수 있는 다양한 이동 시나리오에 익숙해야 합니다. 자세한 내용은 다음 관련 가이드를 참고하세요.

여행 항목 만들기 기본사항

이 섹션에서는 Fleet Engine에서 여정을 만드는 데 필요한 요청 세부정보를 설명합니다. gRPC와 REST 중 하나를 사용하여 생성 요청을 실행합니다.

  • CreateTrip() 메서드: gRPC 또는 REST
  • CreateTripRequest 메시지: gRPC만 해당

이동 필드

다음 필드를 사용하여 Fleet Engine에서 여정을 만듭니다. 단일 또는 다중 목적지, 연속, 공유 풀링 여정 등 다양한 종류의 여정에 서로 다른 필드를 사용할 수 있습니다. 여행을 만들 때 선택사항 필드를 제공하거나 나중에 여행을 업데이트할 때 설정할 수 있습니다.

여행 필드
이름 필수 여부 설명
parent 프로젝트 ID가 포함된 문자열입니다. 이 ID는 동일한 서비스 계정 역할로 전체 Fleet Engine 통합에서 사용되는 ID와 동일해야 합니다.
trip_id 이 여정을 고유하게 식별하기 위해 사용자가 만드는 문자열입니다. 여행 ID에는 참조에 표시된 대로 특정 제한사항이 있습니다.
trip_type 생성 중인 여행 유형에 따라 TripType을 다음 값으로 설정합니다.
  • 단일 대상: SHARED 또는 EXCLUSIVE로 설정합니다.
  • 다중 대상: EXCLUSIVE로 설정합니다.
  • 연속: EXCLUSIVE로 설정합니다.
  • 공유 풀링: SHARED로 설정합니다.
pickup_point 여행의 출발지입니다.
중간 대상

다중 목적지 여정만 해당: 기사가 탑승과 하차 사이에 방문하는 중간 목적지 목록입니다. dropoff_point와 마찬가지로 이 필드는 나중에 UpdateTrip를 호출하여 설정할 수도 있지만 다중 목적지 여정에는 정의상 중간 목적지가 포함됩니다.

vehicle_waypoints

공유 풀링 여정만 해당: 이 필드는 여러 여정의 경유지를 인터리브하는 것을 지원합니다. 할당된 차량의 나머지 모든 경유지와 이 여정의 탑승 및 하차 경유지가 포함됩니다. CreateTrip 또는 UpdateTrip을 호출하여 이 필드를 설정할 수 있습니다. UpdateVehicle 호출을 통해 waypoints 필드를 사용하여 차량 경유지를 업데이트할 수도 있습니다. 개인 정보 보호를 위해 서비스는 GetTrip 호출에서 이 정보를 반환하지 않습니다.

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에서 생성된 모든 이동 일정을 차량에 할당해야 합니다. 여행을 만드는 동안 또는 나중에 여행을 업데이트할 때 이 작업을 수행할 수 있습니다.

차량에 여정을 할당하면 Fleet Engine이 연속된 여정과 연결된 경유지를 차량의 경유지 필드에 자동으로 추가합니다. 여행의 remainingWaypoints 필드에는 여행의 하차 지점 전에 방문할 다른 여행의 경유지를 포함한 모든 경유지 목록이 포함됩니다.

예를 들어 A 여행B 여행이라는 두 개의 연속된 여행이 있다고 가정해 보겠습니다. 차량이 A 여정의 소비자를 태웠고, 하차 위치로 이동하는 중에 운전자가 다음 여정인 B 여정의 소비자를 태우라는 요청을 받습니다.

  • getVehicle()을 호출하면 다음을 포함하는 remainingWaypoints이 반환됩니다.
    A 하차B 승차B 하차
  • getTrip() 또는 Trip AonTripRemainingWaypointsUpdated 콜백이 다음을 포함하는 remainingWaypoints를 반환합니다.
    A Drop-off
  • getTrip() 또는 Trip BonTripRemainingWaypointsUpdated 콜백은
    , A Drop-offB PickupB Drop-off를 포함하는 remainingWaypoints를 반환합니다.

다음 단계