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

残りのルートの地点を取得する

Trip エンティティには、TripWaypoint タイプの繰り返しフィールドが含まれています。このフィールドには、このルートの最終的な降車地点に到達する前に車両が移動する必要があるすべてのウェイポイントが順番に含まれます。ルート共有ビューを指定すると、更新された情報が remaining_waypoints[0] TripWaypoint に格納されます。ルート共有以外のビューでは、通常、そのウェイポイントには、割り当てられた車両の最新の位置は反映されません。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 に沿って pickup までの距離
eta = 更新された到着予定日
期間 = 更新された期間
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
ウェイポイント タイプ = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 降車地点からの 1 つ目の LatLng
降車地点から 2 番目の LatLng
...
配送ルートの最後の LatLng
dropoff_point(前回と異なる場合)
traffic_data
Distance_meters = 乗車場所から path_to_waypoint から降車までの距離
ETA = 更新された到着予定時刻
duration = 返却便の所要時間

連続したプーリングルートと共有プールルートの場合、このリストには、この行程の前に通過する他のルートの地点が含まれている可能性があります。たとえば、ルート 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 つのエントリのみが存在します。