Fleet Engine에서 직접 이동 데이터 검색

이 가이드에서는 Consumer SDK를 사용하는 대신 Fleet Engine에서 직접 이동 데이터를 검색하는 방법을 보여줍니다. 이 접근 방식을 사용하면 Fleet Engine의 정확한 실시간 차량 위치, 도착 예정 시간, 경로를 활용하면서 최종 사용자 환경을 더 세부적으로 제어할 수 있습니다.

Consumer SDK 사용에 관한 자세한 내용은 주문형 이동을 위한 여정 공유를 참고하세요.

경로 정보 검색

Fleet Engine에서 이동 정보를 직접 검색하려면 JOURNEY_SHARING_V1S 뷰를 지정하여 GetTrip 메서드를 호출합니다. RPC 또는 REST 참조를 확인하세요.

일반적으로 서버는 사용자가 차량 진행 상황을 적극적으로 모니터링하는 동안 이동 서비스에서 각 이동의 상태를 폴링합니다. 차량 위치 업데이트는 일반적으로 10초마다 발생하며 시스템은 동일한 비율로 폴링해야 합니다. Trip.last_location.update_time 필드를 모니터링하여 이전 GetTrip 호출 이후 업데이트가 있었는지 확인할 수 있습니다.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-A";

String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
GetTripRequest getTripRequest =
    GetTripRequest.newBuilder()
        .setName(tripName)
        .setView(JOURNEY_SHARING_V1S)
        .build();
Trip trip = tripService.getTrip(getTripRequest);

결과 Trip 객체에는 다음 필드가 경로에 관한 최신 정보로 채워집니다.

name trip_status remaining_waypoints
vehicle_id trip_type last_location
number_of_passengers pickup_point view (== JOURNEY_SHARING_V1S)
actual_pickup_point intermediate_destinations intermediate_destination_index
pickup_time intermediate_destinations_version dropoff_point
actual_dropoff_point dropoff_time

남은 경로 웨이포인트 가져오기

Trip 항목에는 TripWaypoint 유형의 반복 필드가 포함됩니다. 이 필드에는 이 이동의 최종 하차 지점 전에 차량이 순서대로 이동해야 하는 모든 중간 지점이 포함됩니다. 경로 공유 보기를 지정하면 Fleet Engine에 업데이트된 정보를 remaining_waypoints[0]TripWaypoint에 넣으라는 신호를 보냅니다. 경로 공유가 아닌 다른 보기에서는 일반적으로 이 중간 지점이 할당된 차량의 최신 위치를 반영하지 않습니다. RPC 또는 REST 참조를 확인하세요.

자세한 내용은 운행 소개 가이드의 운행 상태 및 남은 차량 웨이포인트를 참고하세요.

다음은 이동(Trip A)의 remaining_waypoints 필드 예입니다.

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 수령까지의 남은 경로에서 첫 번째 LatLng
수령까지의 남은 경로의 두 번째 LatLng
...
수령까지의 남은 경로의 마지막 LatLng
pickup_point(지난번과 다른 경우)
traffic_data
distance_meters = 현재 vehicle_location에서 path_to_waypoint를 따라 pickup까지의 거리
eta = 업데이트된 도착예정시간
duration = 업데이트된 시간
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 하차 구간의 첫 번째 LatLng
하차 구간의 두 번째 LatLng
...
하차 구간의 마지막 LatLng
dropoff_point(마지막과 다른 경우)
traffic_data
distance_meters = 픽업 위치에서 path_to_waypoint를 따라 하차 위치까지의 거리
eta = 업데이트된 도착예정시간
duration = drop-off leg duration

연달아 이동하는 경로와 공유 풀링 경로의 경우 이 목록에 이 경로 전에 이동해야 하는 다른 경로의 중간 지점이 포함될 수 있습니다. 예를 들어 이동 B가 이동 A와 동일한 차량에 할당되는 시나리오를 생각해 보세요. 그러면 경로 A의 remaining_waypoints 필드가 다음과 같이 채워집니다. 간결성을 위해 대부분의 필드는 생략되었지만 이전 예와 일관되게 채워집니다.

[0] trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
[1] trip_id = "trip_B"
waypoint_type = PICKUP_WAYPOINT_TYPE
[2] trip_id = "trip_B"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
[3] trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE

경로 B의 remaining_waypoint 필드는 비슷하게 채워지지만, 경로 A의 하차 지점이 경로 B의 경로에 포함되지 않으므로 처음 세 항목만 표시됩니다.