直接從 Fleet Engine 擷取行程資料

Consumer SDK 提供統包功能,可讓共乘消費者應用程式顯示車輛在旅程中的位置和進度。

不過,部分代僱駕駛服務供應商希望能透過彈性整合功能進一步控管使用者的客戶體驗,同時仍能運用 Google 準確且即時的車輛位置、預計到達時間和路線。本指南說明如何直接透過 Fleet Engine 擷取行程資料,做為使用 Consumer SDK 的替代方案。

總覽

如要直接從 Fleet Engine 擷取行程資訊,請呼叫 GetTrip 方法,並指定 JOURNEY_SHARING_V1S 檢視畫面 (RPC | REST)。

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);

產生的行程 (RPC | REST) 物件的下列欄位會填入行程的最新可用資訊:

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

共乘服務供應商通常每兩到五秒會輪詢行程服務的狀態,乘客會主動監控車輛進度。車輛位置更新通常較長的間隔時間,例如 10 秒。您可以監控 Trip.last_location.update_time 欄位,確認自上次呼叫 GetTrip 後是否有任何更新。

行程路線控點

行程實體包含 TripWaypoint 類型的重複欄位 (RPC | REST)。這個欄位包含車輛必須依序行駛的所有路線控點,然後位於此行程的最終下車地點。指定旅程共享檢視畫面會指示 Fleet Engine 將更新資訊放在 else_waypoints[0] TripWaypoint 中。在其他非行程分享檢視畫面中,該路線控點通常不會反映已指派車輛的最新位置。

以下是行程 A 的 remaining_waypoints 欄位範例:

[0] location.point = trip.pickup_point.point
Trip_id =「trip_A」
Waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 從剩餘路線到上車地點的第 1 個 LatLng
從剩餘路線到上車地點的第 2 個 LatLng
...
從剩餘路徑到上車地點的最後一個 LatLng
pickup_point (如果與姓氏不同)
traffic_data
Distance_meters = 從 path_to_waypoint 上目前的 car_location 到上車的距離
eta = 更新的預計到達時間
時間長度 = 更新的時間長度
[1] location.point = Trip.dropoff_point.point
Trip_id =「trip_A」
Waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 從下車路段出發的第 1 個 LatLng
從下車路段出發的第 2 個 LatLng
...
從下車路段出發的最後 LatLng
下車地點 (如果與姓氏不同)
traffic_data
Distance_meters = 從 path_to_waypoint 上車地點到下車地點的距離
eta = 更新的預計到達時間
時間長度 = 下車地點持續時間

使用返回和分享 (共乘) 的行程時,這份清單可能包含在這趟行程中遍歷的其他行程路線控點。舉例來說,假設行程 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 的路線。