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

残りの旅行の経由地を取得する

ルート エンティティには、TripWaypoint 型の繰り返しフィールドが含まれています。このフィールドには、このルートの最終的な降車地点に到達するまでに車両が経由する必要があるすべての経由地が順番に含まれています。Journey Sharing ビューを指定すると、Fleet Engine は更新された情報を remaining_waypoints[0] TripWaypoint に配置します。他の Journey Sharing 以外のビューでは、通常、その経由地は割り当てられた車両の最新の位置を反映していません。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
残りの経路から 2 番目の LatLng を受け取り
...
残りの経路の最後の LatLng
pickup_point(前回と異なる場合)
traffic_data
distance_meters = 現在の vehicle_location から path_to_waypoint に沿って乗車地点までの距離
eta = 更新された ETA
duration = 更新された期間
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 乗車地点の最初の LatLng
乗車地点の 2 番目の LatLng
...
降車地点の最後の LatLng
dropoff_point(前回と異なる場合)
traffic_data
distance_meters = 乗車地点から経由地点までの経路に沿った距離から降車地点までの距離
eta = 更新された ETA
duration = 送迎区間の所要時間

連続した相乗りや共有プールの乗車の場合、このリストには、この乗車の前に通過する他の乗車の経由地が含まれることがあります。たとえば、ルート 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 のルートに含まれていないため、最初の 3 つのエントリのみが存在します。