本指南說明如何直接從 Fleet Engine 擷取行程資料,做為使用 Consumer SDK 的替代方案。這種做法可讓您進一步控管使用者體驗,同時仍能運用 Fleet Engine 準確、即時的車輛位置、預計到達時間和路線資訊。
如要進一步瞭解如何使用 Consumer SDK,請參閱「分享隨選行程」。
擷取行程資訊
如要直接從 Fleet Engine 擷取行程資訊,請呼叫 GetTrip 方法,並指定 JOURNEY_SHARING_V1S 檢視畫面。請參閱 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 的參考資料。
詳情請參閱「行程簡介」指南中的「行程狀態和剩餘車輛路線控點」一節。
以下是行程 A 的 remaining_waypoints 欄位範例:
| |||||||||||||||||||||
| |||||||||||||||||||||
如果是連續和共乘行程,這份清單可能包含其他行程的路線控點,必須先經過這些控點,才能進行這趟行程。舉例來說,假設行程 B 與行程 A 指派給同一輛車。Trip 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 的路線。