Talep üzerine mobilite yolculuk hizmeti kapsamında, SearchVehicles yöntemini kullanarak yakındaki araçları bulabilirsiniz.
SearchVehicles yöntemi, tüketici mobil uygulamanızda belirli bir yolculuğa veya teslimat isteğine en uygun olan, yakındaki kullanılabilir araçları bulmanıza olanak tanı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 çizgi mesafesi seçeneklerinden birine göre yapılır.
| Arama Özellikleri | Araç Özellikleri |
|---|---|
|
|
SearchVehicles yöntemini kullanın
SearchVehicles'yı kullanmak için genel olarak şu süreci izleyin:
- Atanacak geziye göre bir
SearchVehiclesRequestoluşturun. - Oluşturulan istekle
SearchVehiclesAPI'sini (vehicleService.searchVehicles) çağırın. - API'den döndürülen
SearchVehicleResponsedeğerini işleyin.
SearchVehiclesRequest alanları
SearchVehiclesRequest oluşturmak için aşağıdaki zorunlu özellik alanlarını kullanın:
| Alan | Açıklama |
|---|---|
| ebeveyn | 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. ÖZEL (sürücü başına tek seferde bir etkin yolculuk) veya PAYLAŞIMLI (sürücü başına tek seferde bir veya birden fazla yolculuk) olabilir. |
| minimum_capacity | Zorunludur. Aracın yeni bir yolculuk için (yolcular veya teslimatlar için) kalan minimum kapasitesi. |
| pickup_point | Zorunludur. Gezinin teslim alma konumunun enlem/boylam koordinatları. |
| dropoff_point | İsteğe bağlıdır. Yolculuğun enlem/boylam koordinatları cinsinden bırakma konumu. 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). |
| filtre | İsteğe bağlı. Araçlar aranırken uygulanacak 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 X Restoranı'ndan alınmak istediğini ve dört aracınız olduğunu varsayalım:
- 1. araç: RestaurantX'e 3.500 m uzaklıkta.
- Araç 2: RestaurantX'e 100 m uzaklıkta, A ve B konumlarında teslim alma ve bırakma işlemi olan etkin bir geziye sahip.
- 3. araç: RestaurantX'e 200 m uzaklıkta ve çok uzakta bir teslimat noktası var.
- Araç 4: RestaurantX'ten 1.000 metre uzakta.
Aşağıda, döndürdükleri araca göre çeşitli istekler gösterilmektedir.
Returns Vehicle 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
3 ve 4 numaralı araçları 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 dahil olmak üzere Vehicle nesnesi. |
| vehicle_pickup_eta | Bu gezi şu anda araca atanırsa aracın teslim alma konumuna tahmini varış süresi. |
| vehicle_pickup_distance_meter | Araç ile yeni gezinin teslim alma konumu arasındaki metre cinsinden mesafe. |
| vehicle_pickup_straight_line_distance_meter | Araç ile yeni yolculuğun teslim alma konumu arasındaki düz çizgi mesafesi (metre cinsinden). |
| vehicle_dropoff_eta | Bu seyahat şu anda araca atanırsa aracın bırakma konumuna tahmini varış süresi. |
| vehicle_trips_waypoints | Araca atanmış etkin geziler için teslim alma ve bırakma noktaları dahil olmak üzere kalan yol noktalarını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 şu sayfaya 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çlar için ö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 kapasitesi 6 olan bir araç arar ve evcil hayvan kabul eden gibi bir attributes filtresi 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'ı inceleyin. Örnekler için. Araç özellikleri oluşturmayla ilgili ayrıntılar için Araç alanlarını güncelleme kılavuzundaki Araç özellikleri alanı bölümüne bakın.
SearchVehicles Örneği
Aşağıdaki örnekte, Java gRPC kitaplığı kullanılarak SearchVehicles API'nin nasıl kullanılacağı gösterilmektedir. Desteklenen dillerin tam listesi için İsteğe bağlı gezi hizmetleri için istemci kitaplıkları başlıklı makaleyi inceleyin.
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.