車両を検索

Mobility オンデマンド旅行サービスの一部として、近くの車両を検索できます SearchVehicles メソッドを使用します。

SearchVehicles メソッドを使用すると、 特定の配車または配達に最も適した消費者向けモバイルアプリ リクエストできます。SearchVehicles API は、 属性がリクエストされたルート属性と一致するかどうか。ランキングは、 到着予定時刻、乗車地点からの距離、直線距離からいずれかを選択できます。

属性を検索 車両属性
  • 乗車場所と降車場所
  • リクエストされた車両とルートのタイプ
  • 必要な容量
  • その他の必須照合属性
  • 車両の直近の位置情報
  • 車両の状態、タイプ、収容人数
  • その他のカスタム属性

SearchVehicles メソッドを使用する

SearchVehicles を使用するには、次の一般的なプロセスに従います。

  1. 割り当てるルートに基づいて SearchVehiclesRequest を作成します。
  2. 次のように SearchVehicles API(vehicleService.searchVehicles)を呼び出します。 必要があります。
  3. API から返された SearchVehicleResponse を処理します。

SearchVehiclesRequest フィールド

次の必須属性フィールドを使用して、 SearchVehiclesRequest:

フィールド 説明
必須。providers/{provider} の形式にする必要があります。プロバイダは、この呼び出しを行うサービス アカウントがメンバーになっている Google Cloud プロジェクトのプロジェクト ID である必要があります。
vehicle_types 必須。リクエストする車両の種類(AUTO、TWO_WHEELER、TAXI、TRUCK、BICYCLE、PEDESTRIAN)。
trip_types 必須。EXCLUSIVE(ドライバー 1 人につき 1 回のアクティブな走行)または SHARED(運転者 1 人につき 1 回または複数の走行)。
minimum_capacity 必須。新しいルート(乗客または配達員)の車両の最小残容量。
pickup_point 必須。緯度/経度座標で表したルートの乗車場所。
dropoff_point 省略可。緯度/経度座標で表したルートの降車場所。 trip_types に TripType.SHARED が含まれている場合、このフィールドは必須です。
pickup_radius_meters 必須。乗車地点からの車両検索エリアの半径(メートル単位)。
order_by 必須。以下のいずれかの方法で車両を注文します。
  • PICKUP_POINT_ETA: 乗車地点における車両の到着予定時刻。
  • PICKUP_POINT_DISTANCE は、車両と乗車地点間の距離です。
  • DROPOFF_POINT_ETA: 降車地点でルートを完了するための車両の到着予定時刻。
  • PICKUP_POINT_STRAIGHT_DISTANCE は、車両と乗車地点間の(ルート上ではない)直線距離です。
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 は、ランク付けされた VehicleMatch エンティティのリストで構成されます。 SearchVehiclesRequest で指定された order_by 属性で照合を行います。各 VehicleMatch エンティティには次のフィールドがあります。

フィールド 説明
車両 Vehicle オブジェクト(vehicle_id 属性と Vehicle 属性を含む)。
vehicle_pickup_eta 新しいルートの乗車地点における車両の到着予定時刻。これは運転中の到着予定時刻です。
vehicle_pickup_distance_meter 車両から新しいルートの乗車場所までの距離(メートル単位)。
vehicle_pickup_straight_line_distance_meter 車両と新しいルートの乗車地点間の直線距離(メートル単位)。
vehicle_dropoff_eta Timestamp 新しいルートの乗車地点における車両の到着予定時刻。なお、ETA は、運転中の到着予定時刻です。
vehicle_trips_waypoints 車両に現在割り当てられているアクティブなルートの残りのウェイポイントのリスト(乗車地点と降車地点を含む)。
vehicle_match_type 車両のルートタイプ(EXCLUSIVE、BACK_TO_BACK、CARPOOL、CARPOOL_BACK_TO_BACK のいずれか)。

VehicleMatch フィールドの完全なリストについては、以下をご覧ください。

で確認できます。

フィルタクエリを使用する

SearchVehiclesListVehicles が車両属性でのフィルタリングをサポート フィルタクエリを使用します。

フィルタクエリでは、車両のカスタム属性のフィルタのみがサポートされています。 他のフィールドには使用できません。他のフィールドを含む検索で使用する場合 minimum_capacityvehicle_types などの条件、フィルタクエリ AND 句として使用できます。

たとえば、最小キャパシティが 6 で、かつ attributes を「ペット フレンドリー」などとしてフィルタした場合、条件は 6 人以上の乗客を乗せる、ペット可の車両。

フィルタクエリの構文については、AIP-160 をご覧ください。 をご覧ください。車両属性の作成について詳しくは、車両 属性フィールド車両フィールドを更新するガイド)をご覧ください。

SearchVehicles の例

次の例は、次を使用して SearchVehicles API を使用する方法を示しています。 Java gRPC ライブラリ

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.

次のステップ