Mencari pengemudi terdekat

Sebagai bagian dari Solusi Perjalanan dan Pengiriman On-demand, kemampuan Perencanaan Rute dan Pengiriman memungkinkan Anda menemukan pengemudi di sekitar dengan menyediakan SearchVehicles API.

SearchVehicles API memungkinkan Anda menemukan pengemudi di sekitar yang tersedia di aplikasi konsumen Solusi Perjalanan dan Pengiriman On-demand yang paling cocok untuk tugas seperti transportasi online atau permintaan pengiriman. SearchVehicles API menampilkan daftar pengemudi berperingkat yang cocok dengan atribut tugas dengan atribut kendaraan di armada Anda.

Atribut tugas dapat meliputi:

  • Lokasi penjemputan dan pengantaran
  • Jenis kendaraan dan perjalanan yang diminta
  • Kapasitas yang diperlukan
  • Atribut pencocokan lain yang diperlukan

Atribut kendaraan dapat mencakup:

  • Lokasi kendaraan yang terakhir diketahui
  • Status, jenis, atau kapasitas kendaraan
  • Atribut khusus lainnya

Peringkat diurutkan berdasarkan pilihan Anda, antara PWT, jarak, atau jarak garis lurus dari titik penjemputan.

Perhatikan bahwa Anda harus memiliki hak istimewa Pengguna Super Layanan Fleet Engine atau Pengguna SDK Konsumen untuk menggunakan SearchVehicles API. Untuk mengetahui informasi selengkapnya, lihat Autentikasi dan Otorisasi.

Menggunakan SearchKendaraan API

Untuk menggunakan SearchVehicles API:

  • Buat SearchVehiclesRequest berdasarkan tugas yang akan diberikan.
  • Panggil SearchVehicles API (vehicleService.searchVehicles) dengan permintaan yang dibuat.
  • Proses SearchVehicleResponse yang ditampilkan dari API.

Kolom Search VehiclesRequest

Gunakan kolom atribut wajib berikut untuk membuat SearchVehiclesRequest:

Kolom Deskripsi
parent Wajib diisi. Harus dalam penyedia format/{provider}. Penyedia harus merupakan Project ID (misalnya, sample-cloud-project) dari Project Google Cloud tempat akun layanan yang melakukan panggilan ini menjadi anggota.
vehicle_types Wajib diisi. Jenis kendaraan yang diminta, baik AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE, atau PEDESTRIAN.
trip_types Wajib diisi. Baik EKSKLUSIF (satu perjalanan aktif pada satu waktu per pengemudi) atau DIBAGIKAN (satu atau beberapa perjalanan dalam satu waktu per pengemudi).
minimum_capacity Wajib diisi. Sisa kapasitas minimum kendaraan untuk tugas baru, baik untuk penumpang atau pengiriman.
pickup_point Wajib diisi. Lokasi pengambilan tugas dalam koordinat lintang/bujur.
dropoff_point Opsional. Lokasi drop-off tugas dalam koordinat lintang/bujur. Kolom ini wajib diisi jika trip_types berisi TripType.SHARED.
pickup_radius_meters Wajib diisi. Radius dalam meter area penelusuran kendaraan dari titik penjemputan.
order_by Wajib diisi. Pesan kendaraan dengan salah satu hal berikut:
  • PICKUP_POINT_ETA, PWT kendaraan di titik penjemputan.
  • 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 (tidak dalam rute) antara kendaraan dan titik penjemputan.
jumlah Wajib diisi. Jumlah maksimum kendaraan yang akan dikembalikan mulai dari 1 hingga 50.

Lihat dokumentasi Referensi untuk melihat kumpulan lengkap SearchVehicleRequestfields.

Contoh Search VehiclesRequest

Bagian ini menunjukkan contoh cara membuat SearchVehiclesRequest.

Misalnya, Anda memiliki tugas pengambilan untuk ditetapkan di RestaurantX dan empat kendaraan:

  • Kendaraan 1, yang berjarak 3.500 m dari RestaurantX.
  • Kendaraan 2, yang berjarak 100 m dari RestaurantX dan memiliki perjalanan aktif dengan penjemputan dan penurunan di lokasi A dan B.
  • Kendaraan 3, yang berjarak 200 m dari RestaurantX dan memiliki satu lagi penurunan yang sangat jauh.
  • Kendaraan 4, yang berjarak 1.000 m dari RestaurantX.

SearchVehiclesRequest berikut menampilkan Kendaraan 4:

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

SearchVehiclesRequest berikut menampilkan Kendaraan 3 dan 4:

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

SearchVehiclesRequest berikut menampilkan Kendaraan 2, 3, dan 4:

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

Kolom Search VehiclesResponse

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

Kolom Deskripsi
kendaraan Objek Vehicle, termasuk atribut kendaraan_id dan Vehicle.
vehicle_pickup_eta PWT kendaraan di lokasi penjemputan tugas baru. Ini adalah PWT mengemudi.
vehicle_pickup_distance_meter Jarak dalam meter antara kendaraan dan lokasi penjemputan tugas baru.
vehicle_pickup_straight_line_distance_meter Jarak garis lurus dalam meter antara kendaraan dan lokasi penjemputan untuk tugas baru.
vehicle_dropoff_eta Stempel waktu PWT kendaraan di lokasi pengambilan tugas 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 untuk kendaraan.
vehicle_match_type Jenis perjalanan kendaraan, EXCLUSIVE, BACK_TO_BACK, CARPOOL, atau CARPOOL_BACK_TO_BACK.

Contoh SearchKendaraan

Contoh berikut menunjukkan cara menggunakan 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.