Route Overview API は、DriverSDK 上に構築されたラスト ワンマイルのフリート ソリューション プロダクトです。これを使用すると、特定の車両のルート情報を、1 回限りの取得として、または更新用のリスナーを使用して継続的に取得することができます。Route Overview API では、次の種類の情報がサポートされています。
- 車両の停車地、移動時間、距離を含む完全なルート計画
- 各停車地間の経路のポリライン パス。
このドキュメントでは、アプリケーションの API との統合手順について説明します。
前提条件
- DriverSDK v4.1.0 以降の alpha チャンネルを使用して Android アプリを実行している必要があります。アルファ版チャンネルを使用するには、Maven artifactId に
transportation-driver-alpha
を使用します。 - この API は、Deliveries API を介して Fleet Engine から提供されたルート情報を使用します。これは、DriverSDK の API(
DeliveryDriverApi
)を介して、または Fleet Engine に直接提供できます。
統合の手順
このセクションでは、Android ドライバアプリを API と統合するために必要な基本的な手順について説明します。この手順では、次のことを前提としています。
- Driver SDK とすでに統合されている既存の Android アプリがある
- 表示されるコンテキスト オブジェクトを使用して、アプリ内の
DeliveryDriverApi
を初期化している
詳しくは、Android 用 Driver SDK のスタートガイドをご覧ください。
ステップ 0 - ルートの設定
すでに Fleet Engine を設定していて、車両停車と配達タスクを作成できる場合は、この手順をスキップできます。
停車地とタスクの情報を Fleet Engine に読み込むには、有効なルートに割り当てられている配達車両が必要です。Route Overview API では データを取得するために有効なルートが必要です有効なルートは一連の地点と停車地で構成され、停車地は 1 つ以上の関連タスクがある場合にのみ存在できます。詳細については、Fleet Engine API 統合ガイドをご覧ください。
ステップ 1 - API を初期化する
関連する停車地とタスクを含む有効なルートを確立したら、Route Overview API を初期化できます。初期化することで、Fleet Engine と API 間の接続に必要なフレームワークが提供されます。Route Overview API は、DriverSDK で DeliveryDriverApi
の初期化に使用したものと同じコンテキスト オブジェクトで初期化する必要があります。このオブジェクトは、以前に DriverContext
オブジェクトで定義したものと同じ車両 ID を参照するためです。次の例は、RouteOverviewApi
のインスタンスを作成する方法を示しています。
RouteOverviewApi api = RouteOverviewApi.getInstance();
if (api == null) {
api = RouteOverviewApi.createInstance(context);
}
ステップ 2 - ルート変更イベントに車両を登録する
API の初期化が完了したので、VehicleRouteOverview
オブジェクトを使用してルートの概要機能を操作できるようになりました。これにより、アプリケーションはルート設定時に指定したルート情報を使用できるようになります。API イベント リスナーを使用して、イベントの更新やルートの取得を容易にします。
ルート変更イベントは、車両に割り当てられている停車地へのパスが更新されたとき、停車地が再配置されたとき、または Fleet Engine が到着予定時刻を更新したときに発生します。
vehicleRouteOverview.addOnRouteChangedEventListener(event -> {
// handle route update events
});
ステップ 3 - API を有効にする
ルート情報を使用する準備ができたら、API を有効にして車両イベントに応答できるようにする必要があります。ネットワーク帯域幅の不要な消費を避けるため、API は無効状態で初期化されます。
vehicleRouteOverview.setRouteOverviewEnabled(true);
false
の値で同じメソッドを呼び出すことで、これらの更新をいつでも一時停止できます。
ステップ 4 - Google マップにルートを描画する
RouteToVehicleStop
のリストを取得したら、それをアプリケーションで使用できます。たとえば、Google マップ インスタンスに経路のポリライン パスを描画できます。次のコード スニペットは、地図表示に経路のポリラインを描画し、各停車地の上にマーカーを追加する例を示しています。
GoogleMap googleMap = … // Instance of the Map view you are using
ImmutableList<RouteToVehicleStop> route = event.newRoute();
PolylineOptions routePolyline = new PolylineOptions().color(Color.BLUE);
for (RouteToVehicleStop stop : route) {
routePolyline.addAll(stop.path());
MarkerOptions marker =
new MarkerOptions().position(stop.vehicleStop().getWaypoint().getPosition());
googleMap.addMarker(marker);
}
googleMap.addPolyline(routePolyline);
}
これにより、右のスクリーンショットのようなビューが表示されます。
ステップ 5 - ルートのスナップショットを取得する
アプリで現在のルート情報のスナップショットを取得する 1 回限りの呼び出しを発行する場合は、次のメソッドを使用してそのデータを取得できます。
ListenableFuture<ImmutableList<RouteToVehicleStop> future = vehicleRouteOverview.getRouteToVehicleStops();
ImmutableList<RouteToVehicleStop> stops = future.get();
イベント リスナーを介してルートの更新をサブスクライブする代わりに、これを行うことができます。
ステップ 6 - クリーンアップする
アプリでルートの概要機能が不要になった場合は、クリーンアップしたことを確認する必要があります。クリーンアップを行うと、アプリでの不要なメモリ、処理、ネットワークの使用を回避できます。
特定のイベント リスナーを削除する
特定のリスナーが不要になったら、イベント リスナーを削除する必要があります。
vehicleRouteOverview.removeOnRouteChangedEventListener(listener);
すべてのイベント リスナーを消去
クリーンアップ ルーチンの一環として、登録されているすべてのイベント リスナーを一度に削除できます。
vehicleRouteOverview.clearEventListeners();
Route Overview API インスタンスをクリア
ルートの概要が不要になった場合、または追跡対象の車両の ID が変更された場合は、この API を呼び出して内部参照を消去できます。
vehicleRouteOverview.clearInstance();