Talep üzerine mobilite seyahat hizmeti kapsamında, SearchVehicles
yöntemini kullanarak yakındaki araçları bulabilirsiniz.
SearchVehicles
yöntemi, tüketici mobil uygulamanızda yakındaki uygun araçları bulmanıza olanak tanır. Bu araçlar, belirli bir yolculuk veya teslimat isteği için en uygun olanlardır. SearchVehicles
API, özellikleri istenen gezi özellikleriyle eşleşen araçların sıralanmış bir listesini döndürür. Sıralama, tahmini varış zamanı, mesafe veya teslim alma noktasından düz hat mesafesi seçeneklerinden birine göre yapılır.
Arama Özellikleri | Araç Özellikleri |
---|---|
|
|
SearchVehicles
yöntemini kullanın
SearchVehicles
kullanmak için genel olarak şu adımları uygulayın:
- Atanacak geziye göre
SearchVehiclesRequest
oluşturun. - Oluşturulan istekle
SearchVehicles
API'yi (vehicleService.searchVehicles
) çağırın. - API'den döndürülen
SearchVehicleResponse
değerini işleyin.
SearchVehiclesRequest alanları
Aşağıdaki zorunlu özellik alanlarını kullanarak bir SearchVehiclesRequest
oluşturun:
Alan | Açıklama |
---|---|
üst | Zorunludur. providers/{provider} biçiminde olmalıdır. Sağlayıcı, bu çağrıyı yapan hizmet hesabının üyesi olduğu Google Cloud projesinin proje kimliği olmalıdır. |
vehicle_types | Zorunludur. İstenen araç türleri (AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE veya PEDESTRIAN). |
trip_types | Zorunludur. EXCLUSIVE (sürücü başına aynı anda bir etkin yolculuk) veya SHARED (sürücü başına aynı anda bir veya birden fazla yolculuk) olabilir. |
minimum_capacity | Zorunludur. Yeni bir yolculuk için aracın minimum kalan kapasitesi (yolcular veya teslimatlar için). |
pickup_point | Zorunludur. Gezinin enlem/boylam koordinatları cinsinden teslim alma konumu. |
dropoff_point | İsteğe bağlıdır. Gezinin bırakma konumu, enlem/boylam koordinatları. trip_types TripType.SHARED değerini içeriyorsa bu alan zorunludur. |
pickup_radius_meters | Zorunludur. Teslim alma noktasından itibaren araç arama alanının metre cinsinden yarıçapı. |
order_by | Zorunludur. Araçları aşağıdakilerden birine göre sıralayın:
|
sayı | Zorunludur. Döndürülecek maksimum araç sayısı (1-50). |
filtrele | İsteğe bağlı. Araç ararken uygulanacak bir filtre sorgusu. |
maximum_staleness | İsteğe bağlı. Aramayı yalnızca belirtilen süre içinde Fleet Engine'e konum güncellemeleri gönderen araçlarla kısıtlar. Bu alan ayarlanmazsa sunucu varsayılan değer olarak beş dakikayı kullanır. |
SearchVehicleRequest alanlarının tamamını görmek için Referans belgelerine bakın.
SearchVehiclesRequest senaryoları
Bu bölümde, SearchVehiclesRequest
oluşturma örnekleri gösterilmektedir.
Örneğin, bir müşterinin RestaurantX'ten alınmak istediğini ve dört aracınız olduğunu varsayalım:
- Araç 1: RestaurantX'ten 3.500 metre uzakta.
- Araç 2: A ve B konumlarında yolcu alma ve bırakma işlemleriyle etkin bir yolculukla RestaurantX'ten 100 metre uzakta.
- Araç 3: RestaurantX'ten 200 metre uzakta ve çok uzak bir yerde bir teslimat noktası kaldı.
- 4. Araç: RestaurantX'ten 1.000 metre uzakta.
Aşağıda, döndürülen araca göre çeşitli istekler gösterilmektedir.
Aracı İade Etme 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
3 ve 4 numaralı aracı döndürür.
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
2, 3 ve 4 numaralı araçları döndürür.
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
SearchVehiclesResponse alanları
Bir SearchVehiclesResponse
, SearchVehiclesRequest
içindeki belirtilen order_by özelliğine göre sıralanmış VehicleMatch
öğelerinin listesinden oluşur. Her
VehicleMatch
varlığında aşağıdaki alanlar bulunur:
Alan | Açıklama |
---|---|
araç | vehicle_id ve Vehicle özellikleri de dahil olmak üzere Vehicle nesnesi. |
vehicle_pickup_eta | Bu gezi şu anda araca atanırsa aracın teslim alma konumuna tahmini varış zamanı. |
vehicle_pickup_distance_meter | Araç ile yeni yolculuğun alınma konumu arasındaki mesafe (metre cinsinden). |
vehicle_pickup_straight_line_distance_meter | Araç ile yeni yolculuğun teslim alma konumu arasındaki kuş uçuşu mesafe (metre cinsinden). |
vehicle_dropoff_eta | Bu yolculuk şu anda araca atanırsa aracın bırakma konumuna tahmini varış zamanı. |
vehicle_trips_waypoints | Araca şu anda atanmış etkin yolculuklar için teslim alma ve bırakma noktaları da dahil olmak üzere kalan ara noktaların listesi. |
vehicle_match_type | Aracın seyahat türü (EXCLUSIVE, BACK_TO_BACK, CARPOOL veya CARPOOL_BACK_TO_BACK). |
VehicleMatch
alanlarının tam listesi için şuraya bakın:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Filtre sorgularını kullanma
SearchVehicles
ve ListVehicles
, filtre sorgusu kullanarak araç özelliklerine göre filtrelemeyi destekler.
Filtre sorguları YALNIZCA araçlara ait özel özelliklere göre filtrelemeyi destekler ve diğer alanlar için kullanılamaz. minimum_capacity
veya vehicle_types
gibi diğer alan ölçütlerini içeren bir aramada kullanıldığında filtre sorgusu, AND
ifadesi olarak işlev görür.
Örneğin, minimum 6 kişilik kapasiteye sahip bir araç arayıp evcil hayvan kabulü gibi bir attributes
filtre uygularsanız ölçütleriniz yalnızca hem evcil hayvan kabul eden hem de en az 6 yolcu taşıyabilen araçları döndürür.
Filtre sorgusu söz dizimi için AIP-160'taki örneklere bakın. Araç özellikleri oluşturma hakkında ayrıntılı bilgi için Araç alanlarını güncelleme kılavuzundaki Araç özellikleri alanı başlıklı makaleyi inceleyin.
SearchVehicles örneği
Aşağıdaki örnekte, SearchVehicles
API'nin Java gRPC kitaplığı kullanılarak nasıl kullanılacağı gösterilmektedir.
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.