このガイドでは、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 型の繰り返しフィールドが含まれています。このフィールドには、このルートの最終降車地点に到着するまでに車両が移動する必要があるすべてのウェイポイントが順番に含まれています。Journey Sharing ビューを指定すると、Fleet Engine は更新された情報を remaining_waypoints[0] TripWaypoint に配置します。他のビュー(活動の共有以外のビュー)では、通常、そのウェイポイントに割り当てられた車両の最新の位置は反映されません。RPC または REST のリファレンスをご覧ください。
詳細については、乗車情報の概要ガイドの乗車状況と車両の残りの経由地をご覧ください。
旅行 A の remaining_waypoints フィールドの例を次に示します。
| |||||||||||||||||||||
| |||||||||||||||||||||
連続した相乗り乗車の場合、このリストには、この乗車前に通過する他の乗車の経由地が含まれることがあります。たとえば、ルート 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 のルートに含まれていないため、最初の 3 つのエントリのみが存在します。