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
フィールドの例を次に示します。
| |||||||||||||||||||||
|
連続移動や共有(相乗り)のルートの場合、このリストには、このルートで通過する他のルートのウェイポイントが含まれることがあります。たとえば、ルート 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 つのエントリのみが表示されます。