Telusuri kendaraan

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

Metode SearchVehicles memungkinkan Anda menemukan kendaraan terdekat yang tersedia di aplikasi seluler konsumen Anda yang paling cocok untuk perjalanan atau permintaan pengiriman tertentu. SearchVehicles API menampilkan daftar kendaraan yang diberi peringkat yang atributnya cocok dengan atribut perjalanan yang diminta. Peringkat diurutkan berdasarkan pilihan Anda, yaitu perkiraan waktu tiba, jarak, atau jarak garis lurus dari titik pengambilan.

Atribut Penelusuran Atribut Kendaraan
  • Lokasi penjemputan dan pengantaran
  • Jenis perjalanan dan kendaraan yang diminta
  • Kapasitas yang diperlukan
  • Atribut pencocokan wajib lainnya
  • 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. Panggil SearchVehicles API (vehicleService.searchVehicles) dengan permintaan yang dibuat.
  3. Proses SearchVehicleResponse yang ditampilkan dari API.

Kolom SearchVehiclesRequest

Gunakan kolom atribut wajib diisi berikut untuk membuat SearchVehiclesRequest:

Kolom Deskripsi
induk Wajib diisi. Harus dalam format providers/{provider}. Penyedia harus berupa Project ID Project Google Cloud yang akun layanannya melakukan panggilan ini.
vehicle_types Wajib diisi. Jenis kendaraan yang diminta, baik AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE, atau PEDESTRIAN.
trip_types Wajib diisi. EXCLUSIVE (satu perjalanan aktif dalam satu waktu per pengemudi) atau SHARED (satu atau beberapa perjalanan dalam satu waktu per pengemudi).
minimum_capacity Wajib diisi. Kapasitas minimum yang tersisa dari kendaraan untuk perjalanan baru, baik untuk penumpang maupun 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 Wajib diisi. Radius area penelusuran kendaraan dalam meter dari titik penjemputan.
order_by Wajib diisi. Urutkan kendaraan berdasarkan salah satu dari berikut ini:
  • PICKUP_POINT_ETA, perkiraan waktu tiba kendaraan di titik pengambilan.
  • PICKUP_POINT_DISTANCE, jarak antara kendaraan dan titik penjemputan.
  • DROPOFF_POINT_ETA, perkiraan waktu tiba kendaraan untuk menyelesaikan perjalanan di titik pengantaran.
  • PICKUP_POINT_STRAIGHT_DISTANCE, jarak garis lurus (bukan dalam rute) antara kendaraan dan titik pengambilan.
jumlah Wajib diisi. Jumlah maksimum kendaraan yang akan ditampilkan dari 1 hingga 50.
filter Opsional. Kueri filter yang akan diterapkan saat menelusuri kendaraan.
maximum_staleness Opsional. Membatasi penelusuran hanya pada kendaraan yang telah mengirimkan update lokasi ke Fleet Engine dalam durasi yang ditentukan. Jika kolom ini tidak disetel, server akan menggunakan lima menit sebagai nilai default.

Lihat dokumentasi Referensi untuk melihat kumpulan lengkap kolom SearchVehicleRequest.

Skenario SearchVehiclesRequest

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 dengan penjemputan dan pengantaran di lokasi A dan B.
  • Kendaraan 3: Berjarak 200 m dari RestaurantX dengan satu pengantaran yang tersisa sangat jauh.
  • Kendaraan 4: Berjarak 1000 m dari RestaurantX.

Berikut menampilkan berbagai permintaan berdasarkan kendaraan yang menampilkannya.

Mengembalikan 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 SearchVehiclesResponse

SearchVehiclesResponse terdiri dari daftar entity VehicleMatch, yang diberi peringkat berdasarkan atribut order_by yang ditentukan dalam SearchVehiclesRequest. Setiap entity VehicleMatch memiliki kolom berikut:

Kolom Deskripsi
kendaraan Objek Vehicle, termasuk atribut vehicle_id dan Vehicle.
vehicle_pickup_eta Perkiraan waktu kedatangan kendaraan di lokasi pengambilan jika perjalanan ini ditetapkan ke kendaraan sekarang.
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 Perkiraan waktu kedatangan kendaraan di lokasi pengantaran jika perjalanan ini ditetapkan ke kendaraan saat ini.
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, yaitu EXCLUSIVE, BACK_TO_BACK, CARPOOL, atau CARPOOL_BACK_TO_BACK.

Untuk 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 kustom untuk kendaraan, dan tidak dapat digunakan untuk kolom lain. Jika digunakan dalam penelusuran yang menyertakan kriteria kolom lain, seperti minimum_capacity atau vehicle_types, kueri filter berfungsi sebagai klausa AND.

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

Untuk sintaksis kueri filter, lihat AIP-160 untuk contohnya. Untuk mengetahui detail tentang cara membuat atribut kendaraan, lihat Kolom atribut kendaraan di panduan Memperbarui 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