Mobility オンデマンド旅行サービスの一部として、近くの車両を検索できます
SearchVehicles
メソッドを使用します。
SearchVehicles
メソッドを使用すると、特定の乗車リクエストや配達リクエストに最適な、近くで利用可能な車両を消費者向けモバイルアプリで見つけることができます。SearchVehicles
API は、
属性がリクエストされたルート属性と一致するかどうか。ランキングは、
到着予定時刻、乗車地点からの距離、直線距離からいずれかを選択できます。
属性を検索 | 車両属性 |
---|---|
|
|
SearchVehicles
メソッドを使用する
SearchVehicles
を使用するには、次の一般的なプロセスに従います。
- 割り当てるルートに基づいて
SearchVehiclesRequest
を作成します。 - 次のように
SearchVehicles
API(vehicleService.searchVehicles
)を呼び出します。 必要があります。 - API から返された
SearchVehicleResponse
を処理します。
SearchVehiclesRequest フィールド
SearchVehiclesRequest
を作成するには、次の必須属性フィールドを使用します。
フィールド | 説明 |
---|---|
親 | 必須。providers/{provider} の形式にする必要があります。プロバイダは、この呼び出しを行うサービス アカウントがメンバーである Google Cloud プロジェクトのプロジェクト ID にする必要があります。 |
vehicle_types | 必須。リクエストされた車両の種類(AUTO、TWO_WHEELER、TAXI、TRUCK、BICYCLE、PEDESTRIAN)。 |
trip_types | 必須。排他的(ドライバーごとに一度に 1 件のアクティブなルート)または共有(ドライバーごとに一度に 1 件以上のルート)のいずれかです。 |
minimum_capacity | 必須。新しいルート(乗客または配達)で車両に残されている最低限の容量。 |
pickup_point | 必須。緯度/経度座標で表したルートの乗車地点。 |
dropoff_point | 省略可。ルートの降車地点の緯度と経度の座標。trip_types に TripType.SHARED が含まれている場合、このフィールドは必須です。 |
pickup_radius_meters | 必須。乗車地点からの車両検索エリアの半径(メートル単位)。 |
order_by | 必須。次のいずれかの方法で車両を注文します。
|
count | 必須。返却する車両の最大数(1 ~ 50)。 |
フィルタ | (省略可)車両を検索するときに適用するフィルタクエリ。 |
詳細については、リファレンス ドキュメントをご覧ください。 SearchVehicleRequest フィールド
SearchVehiclesRequest のシナリオ
このセクションでは、SearchVehiclesRequest
の作成方法の例を示します。
たとえば、顧客がレストラン X での受け取りを希望する場合、 車両が 4 台あるとします。
- 車両 1: レストラン X から 3,500 m。
- 車両 2: レストラン X から 100 m のところに位置し、A と B の場所での乗車と下車を含むアクティブなルートを運行中。
- 車両 3: レストラン X から 200 m、下車は残り 1 回 遠くにいることがわかるでしょう。
- 車両 4: レストラン X から 1,000 m 離れた場所。
以下は、返却する車両によるさまざまなリクエストを示しています。
車両 4 を返します
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
車両 3 と 4 を返します
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
車両 2、3、4 を返します。
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
SearchVehiclesResponse フィールド
SearchVehiclesResponse
は、SearchVehiclesRequest
で指定された order_by 属性でランク付けされた VehicleMatch
エンティティのリストで構成されます。各 VehicleMatch
エンティティには次のフィールドがあります。
フィールド | 説明 |
---|---|
車両 | Vehicle オブジェクト(vehicle_id 属性と Vehicle 属性を含む)。 |
vehicle_pickup_eta | 新しい乗車の乗車地点における車両の到着予定時刻。これは運転による到着予定時刻です。 |
vehicle_pickup_distance_meter | 車両から新しいルートの乗車場所までの距離(メートル単位)。 |
vehicle_pickup_straight_line_distance_meter | 車両と新しい乗車の乗車地点との間の直線距離(メートル単位)。 |
vehicle_dropoff_eta | 新しい乗車の集合場所での車両の到着予定時刻のタイムスタンプ。なお、この ETA は運転時の ETA です。 |
vehicle_trips_waypoints | 現在車両に割り当てられているアクティブなルートの残りのウェイポイントのリスト(乗車地と降車地を含む)。 |
vehicle_match_type | 車両のルートタイプ(EXCLUSIVE、BACK_TO_BACK、CARPOOL、CARPOOL_BACK_TO_BACK のいずれか)。 |
VehicleMatch
フィールドの一覧については、以下をご覧ください。
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
フィルタクエリを使用する
SearchVehicles
と ListVehicles
は、フィルタクエリを使用して車両属性のフィルタリングをサポートしています。
フィルタクエリは、車両のカスタム属性のフィルタリングのみをサポートし、他のフィールドには使用できません。minimum_capacity
や vehicle_types
などの他のフィールド条件を含む検索で使用する場合、フィルタクエリは AND
句として機能します。
たとえば、最小キャパシティが 6 で、かつ
attributes
を「ペット フレンドリー」などとしてフィルタした場合、条件は
6 人以上の乗客を乗せる、ペット可の車両。
フィルタクエリの構文については、AIP-160 をご覧ください。 をご覧ください。車両属性の作成について詳しくは、車両 属性フィールド(車両フィールドを更新するガイド)をご覧ください。
SearchVehicles の例
次の例は、Java gRPC ライブラリを使用して SearchVehicles
API を使用する方法を示しています。
static final String PROJECT_ID = "project-id";
VehicleServiceBlockingStub vehicleService =
VehicleService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
SearchVehiclesRequest searchVehiclesRequest = SearchVehiclesRequest.newBuilder()
.setParent(parent)
.setPickupPoint( // Grand Indonesia East Mall
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setDropoffPoint( // Balai Sidang Jkt Convention Center
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.213796).setLongitude(106.807195)))
.setPickupRadiusMeters(2000)
.setCount(10)
.setMinimumCapacity(2)
.addTripTypes(TripType.EXCLUSIVE)
.addVehicleTypes(VehicleType.newBuilder().setCategory(Category.AUTO).build())
.setCurrentTripsPresent(CurrentTripsPresent.ANY)
.setFilter("attributes.on_trip=\"false\"")
.setOrderBy(VehicleMatchOrder.PICKUP_POINT_ETA)
.build();
try {
SearchVehiclesResponse searchVehiclesResponse =
vehicleService.searchVehicles(searchVehiclesRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
List<VehicleMatch> vehicleMatches =
searchVehicleResponse.getMatchesList();
// Each VehicleMatch contains a Vehicle entity and information about the
// distance and ETA to the pickup point and drop-off point.