Telusuri kendaraan

Sebagai bagian dari layanan perjalanan on-demand Mobility, Anda dapat menemukan kendaraan terdekat menggunakan metode SearchVehicles.

Metode SearchVehicles memungkinkan Anda menemukan kendaraan di sekitar yang tersedia di aplikasi seluler konsumen yang paling cocok untuk transportasi atau pengantaran tertentu permintaan. SearchVehicles API menampilkan daftar kendaraan yang diberi peringkat dengan atribut yang cocok dengan atribut perjalanan yang diminta. Peringkat diurutkan menurut pilihan PWT, jarak, atau jarak garis lurus dari titik penjemputan.

Atribut Penelusuran Atribut Kendaraan
  • Lokasi pengambilan dan pengantaran
  • Jenis kendaraan dan perjalanan yang diminta
  • Kapasitas yang diperlukan
  • Atribut pencocokan lainnya yang wajib ada
  • Lokasi terakhir kendaraan yang diketahui
  • Status, jenis, atau kapasitas kendaraan
  • Atribut khusus lainnya

Gunakan metode SearchVehicles

Untuk menggunakan SearchVehicles, ikuti proses umum berikut:

  1. Buat SearchVehiclesRequest berdasarkan perjalanan yang akan ditetapkan.
  2. Memanggil SearchVehicles API (vehicleService.searchVehicles) dengan permintaan yang dibuat.
  3. Proses SearchVehicleResponse yang ditampilkan dari API.

Kolom SearchKendaraansRequest

Gunakan kolom atribut wajib berikut ini untuk membuat SearchVehiclesRequest:

Kolom Deskripsi
induk Wajib diisi. Harus dalam penyedia format/{provider}. Penyedia harus berupa Project ID dari Project Google Cloud tempat akun layanan yang melakukan panggilan ini menjadi anggota.
vehicle_types Wajib diisi. Jenis kendaraan yang diminta, AUTO, TWO_WHEELER, TAXI, TRUCK, bikeYCLE, atau PEDESTRIAN.
trip_types Wajib diisi. EKSKLUSIF (satu perjalanan aktif dalam satu waktu per pengemudi) atau BERSAMA (satu atau beberapa perjalanan dalam satu waktu per pengemudi).
kapasitas_minimum Wajib diisi. Kapasitas minimum kendaraan yang tersisa untuk perjalanan baru, baik untuk penumpang atau pengiriman.
pickup_point Wajib diisi. Lokasi penjemputan perjalanan dalam koordinat lintang/bujur.
dropoff_point Opsional. Lokasi pengantaran perjalanan dalam koordinat lintang/bujur. Kolom ini wajib diisi jika trip_types berisi TripType.SHARED.
pickup_radius_meters [radius_meter_pengambilan] Wajib diisi. Radius dalam meter dari area penelusuran kendaraan dari titik pengambilan.
order_by Wajib diisi. Urutkan kendaraan menurut salah satu hal berikut:
  • PICKUP_POINT_ETA, PWT kendaraan di lokasi penjemputan.
  • PICKUP_POINT_DISTANCE, jarak antara kendaraan dan titik penjemputan.
  • DROPOFF_POINT_ETA, PWT kendaraan untuk menyelesaikan perjalanan di titik penurunan.
  • PICKUP_POINT_STRAIGHT_DISTANCE, jarak garis lurus (bukan dalam rute) antara kendaraan dan titik penjemputan.
jumlah Wajib diisi. Jumlah maksimum kendaraan yang akan dikembalikan dari 1 hingga 50.
Filter Opsional. Kueri filter yang akan diterapkan saat menelusuri kendaraan.

Lihat dokumentasi Referensi untuk melihat kumpulan lengkap kolom SearchVehicleRequest.

Skenario SearchKendaraansRequest

Bagian ini menunjukkan contoh cara membuat SearchVehiclesRequest.

Misalnya, pelanggan ingin dijemput di RestaurantX, dan Anda memiliki empat kendaraan:

  • Kendaraan 1: Berjarak 3.500 m dari RestaurantX.
  • Kendaraan 2: Berjarak 100 m dari RestaurantX dengan perjalanan aktif yang memiliki pengambilan dan pengantaran di lokasi A dan B.
  • Kendaraan 3: 200 m dari RestaurantX dan tersisa satu penurunan jauh.
  • Kendaraan 4: Berjarak 1.000 m dari RestaurantX.

Berikut ini menampilkan berbagai permintaan berdasarkan kendaraan yang ditampilkan.

Pengembalian Kendaraan 4

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
    

Menampilkan Kendaraan 3 dan 4

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
    

Menampilkan Kendaraan 2, 3, dan 4

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
    

Kolom SearchKendaraansResponse

SearchVehiclesResponse terdiri dari daftar entity VehicleMatch, yang diberi peringkat berdasarkan atribut order_by yang ditentukan di SearchVehiclesRequest. Masing-masing Entity VehicleMatch memiliki kolom berikut:

Kolom Deskripsi
kendaraan Objek Vehicle, termasuk atribut Vehicle_id dan Vehicle.
vehicle_pickup_eta PWT kendaraan di lokasi pengambilan perjalanan baru. Ini adalah PWT mengemudi.
vehicle_pickup_distance_meter Jarak dalam meter antara kendaraan dan lokasi penjemputan perjalanan baru.
vehicle_pickup_straight_line_distance_meter Jarak garis lurus dalam meter antara kendaraan dan lokasi penjemputan perjalanan baru.
vehicle_dropoff_eta Stempel waktu PWT kendaraan di lokasi penjemputan perjalanan baru. Perhatikan bahwa PWT adalah PWT mengemudi.
vehicle_trips_waypoints Daftar titik jalan yang tersisa, termasuk titik penjemputan dan pengantaran, untuk perjalanan aktif yang saat ini ditetapkan ke kendaraan.
vehicle_match_type Jenis perjalanan kendaraan, EXCLUSIVE, BACK_TO_BACK, CARPOOL, atau CARPOOL_BACK_TO_BACK.

Untuk mengetahui daftar lengkap kolom VehicleMatch, lihat:

Menggunakan kueri filter

SearchVehicles dan ListVehicles mendukung pemfilteran pada atribut kendaraan menggunakan kueri filter.

Kueri filter HANYA mendukung pemfilteran pada atribut khusus untuk kendaraan, dan tidak dapat digunakan untuk kolom lain. Saat digunakan dalam penelusuran yang menyertakan kolom lain kriteria, seperti minimum_capacity atau vehicle_types, kueri filter berfungsi sebagai klausa AND.

Misalnya, jika Anda menelusuri kendaraan yang memiliki kapasitas minimum 6 penumpang dan filter attributes seperti cocok untuk hewan peliharaan, kriteria Anda hanya akan menampilkan kendaraan yang keduanya ramah hewan peliharaan dan dapat mengangkut setidaknya 6 penumpang.

Untuk sintaksis kueri filter, lihat AIP-160 untuk mengetahui contohnya. Untuk mengetahui detail tentang cara membuat atribut kendaraan, lihat Kendaraan atribut dalam panduan Perbarui kolom kendaraan.

Contoh SearchVehicles

Contoh berikut menunjukkan cara menggunakan SearchVehicles API menggunakan library gRPC Java.

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.

Langkah berikutnya