Sebagai bagian dari layanan perjalanan on-demand Mobility, Anda dapat menemukan kendaraan terdekat
menggunakan metode SearchVehicles
.
Metode SearchVehicles
memungkinkan Anda menemukan kendaraan terdekat yang tersedia di
aplikasi seluler konsumen yang paling sesuai dengan perjalanan atau permintaan
pengiriman tertentu. SearchVehicles
API menampilkan daftar kendaraan yang diberi peringkat dengan
atribut yang cocok dengan atribut perjalanan yang diminta. Peringkat diurutkan berdasarkan
pilihan Anda antara perkiraan waktu tiba, jarak, atau jarak garis lurus dari titik pengambilan.
Atribut Penelusuran | Atribut Kendaraan |
---|---|
|
|
Menggunakan metode SearchVehicles
Untuk menggunakan SearchVehicles
, ikuti proses umum ini:
- Buat
SearchVehiclesRequest
berdasarkan perjalanan yang akan ditetapkan. - Panggil
SearchVehicles
API (vehicleService.searchVehicles
) dengan permintaan yang dibuat. - Proses
SearchVehicleResponse
yang ditampilkan dari API.
Kolom SearchVehiclesRequest
Gunakan kolom atribut wajib berikut untuk membuat
SearchVehiclesRequest
:
Kolom | Deskripsi |
---|---|
induk | Wajib diisi. Harus dalam format providers/{provider}. Penyedia harus berupa Project ID Project Google Cloud yang merupakan anggota akun layanan yang melakukan panggilan ini. |
vehicle_types | Wajib diisi. Jenis kendaraan yang diminta, baik AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE, 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). |
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 dalam meter dari area penelusuran kendaraan dari titik pengambilan. |
order_by | Wajib diisi. Urutkan kendaraan menurut salah satu hal berikut:
|
jumlah | Wajib diisi. Jumlah maksimum kendaraan yang akan ditampilkan dari 1 hingga 50. |
Filter | Opsional. Kueri filter yang akan diterapkan saat menelusuri kendaraan. |
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 yang memiliki pengambilan dan pengantaran di lokasi A dan B.
- Kendaraan 3: Berjarak 200 m dari RestaurantX dengan satu penumpang yang tersisa yang sangat jauh.
- Kendaraan 4: Berjarak 1.000 m dari RestaurantX.
Berikut ini menampilkan berbagai permintaan berdasarkan kendaraan yang ditampilkan.
Menampilkan 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 di SearchVehiclesRequest
. Setiap
entitas VehicleMatch
memiliki kolom berikut:
Kolom | Deskripsi |
---|---|
kendaraan | Objek Vehicle , termasuk atribut vehicle_id dan Vehicle . |
vehicle_pickup_eta | PWT kendaraan di lokasi penjemputan 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, baik EXCLUSIVE, BACK_TO_BACK, CARPOOL, atau CARPOOL_BACK_TO_BACK. |
Untuk mengetahui daftar lengkap kolom VehicleMatch
, lihat:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
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. Saat 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 hewan peliharaan, kriteria Anda hanya akan menampilkan kendaraan yang mengizinkan hewan peliharaan dan dapat mengangkut minimal 6 penumpang.
Untuk sintaksis kueri filter, lihat AIP-160 untuk mengetahui contohnya. Untuk mengetahui detail tentang cara membuat atribut kendaraan, lihat Kolom atribut kendaraan dalam 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.