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

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

소비자 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 유형의 반복 필드가 포함됩니다. 이 필드에는 이 이동의 최종 하차 지점 전에 차량이 순서대로 이동해야 하는 모든 중간 지점이 포함됩니다. 여정 공유 뷰를 지정하면 업데이트된 정보를 나머지 경유지[0] TripWaypoint에 넣도록 Fleet Engine에 지시합니다. 여정 공유가 아닌 다른 뷰에서는 해당 경유지가 일반적으로 할당된 차량의 최신 위치를 반영하지 않습니다. RPC 또는 REST에 대한 참조를 확인하세요.

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

다음은 이동 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_경유지 = LatLng[] 하차 구간에서 첫 번째 LatLng
하차 구간에서 2번째 LatLng
...
하차 구간의 마지막 LatLng
dropoff_point(마지막 위치와 다른 경우)
traffic_data
speed_meters = path_to_경유지 승차에서 하차 지점까지의 거리
eta = 업데이트된 도착예정시간
duration = 하차 구간 소요 시간

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

[0] trip_id = "trip_A"
경유지_유형 = PICKUP_WAYPOINT_TYPE
[1] trip_id = "trip_B"
경유지_유형 = PICKUP_WAYPOINT_TYPE
[2] trip_id = "trip_B"
경유지_유형 = DROP_OFF_WAYPOINT_TYPE
[3] trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE

이동 B의 remaining_waypoint 필드도 마찬가지로 채워지지만 이동 A의 하차 지점이 이동 B 경로의 일부가 아니므로 처음 세 항목만 존재합니다.