Fleet Engine から直接ルートデータを取得する

Consumer SDK は、ライドシェアリングの一般ユーザー向けアプリで、移動中の車両の位置と進捗状況を表示するターンキー機能を提供します。

しかし、一部のライドシェア プロバイダは、Google の正確でリアルタイムの車両位置情報、到着予定時刻、ルートを活用しながら、柔軟な統合によりエンドユーザーのカスタマー エクスペリエンスをより詳細に制御したいと考えています。このガイドでは、Consumer SDK を使用する代わりに、ルートデータを Fleet Engine から直接取得する方法について説明します。

概要

Fleet Engine からルート情報を直接取得するには、JOURNEY_SHARING_V1S ビュー(RPC | REST)を指定して 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(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)

ライドシェア プロバイダは通常、利用者が車両の進行状況を積極的に監視している間、2 ~ 5 秒ごとに各ルートのステータスをポーリングします。車両の位置情報の更新は通常、10 秒など、より長い間隔で行います。Trip.last_location.update_time フィールドをモニタリングして、前回の GetTrip の呼び出し以降に更新があったかどうかを確認できます。

ルートの地点

Trip エンティティには TripWaypoint 型の繰り返しフィールド(RPC | REST)が含まれています。このフィールドには、このルートの最終降車地点の前に車両が順番に移動する必要があるすべての地点が含まれます。移動経路の共有ビューを指定すると、Fleet Engine は、更新された情報を other_waypoints[0] TripWaypoint に配置するように伝えます。移動経路の共有以外のビューでは、通常、その地点には割り当てられた車両の最新の位置は反映されていません。

ルート A の remaining_waypoints フィールドの例を次に示します。

[0]。 location.point = trip.pickup_point.point
trip_id = "trip_A"
地点タイプ = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 到着地点から乗車地点までの 1 番目の LatLng
残りのパスから乗車地点までの 2 番目の LatLng
...
残りのパスから乗車地点までの最後の LatLng
pickup_point(受け取りポイント)(直前の店舗と異なる場合)
traffic_data
Distance_meters = path_to_waypoint に沿った現在の Vehicle_location から乗車地点までの距離
eta = 更新された到着予定時刻
duration = 更新された期間
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
地点タイプ = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 降車区間からの最初の LatLng
降車区間から 2 番目の LatLng
...
降車区間の最後の LatLng
dropoff_point(最後と異なる場合)
traffic_data
Distance_meters = path_to_waypoint に沿った乗車地点から降車までの距離
eta = 更新された到着予定時刻
時間 = 降車区間の所要時間

連続移動や共有(相乗り)のルートの場合、このリストには、このルートで通過する他のルートのウェイポイントが含まれることがあります。たとえば、ルート B がルート A と同じ車両に割り当てられている場合について考えてみましょう。ルート A の remaining_waypoints フィールドには、次のように入力されます。(簡潔にするため、ほとんどのフィールドは省略されていますが、前の例と一致するように入力されています)。

[0]。 trip_id = "trip_A"
地点タイプ = PICKUP_WAYPOINT_TYPE
[1] trip_id = "trip_B"
地点タイプ = PICKUP_WAYPOINT_TYPE
[2] trip_id = "trip_B"
地点タイプ = DROP_OFF_WAYPOINT_TYPE
[3] trip_id = "trip_A"
地点タイプ = DROP_OFF_WAYPOINT_TYPE

ルート B の remaining_waypoint フィールドも同様に入力されますが、ルート A の降車場所はルート B のルートの一部ではないため、最初の 3 つのエントリのみが表示されます。