İsteğe Bağlı Yolculuk ve Teslimat Çözümünüzün bir parçası olan Rota Planlama ve Sevkiyat özelliği, bir SearchVehicles
API'si sağlayarak yakındaki sürücüleri bulmanıza olanak tanır.
SearchVehicles
API, İsteğe Bağlı Yolculuk ve Teslimat Çözümü tüketici uygulamanızda yolculuk veya teslimat isteği gibi bir göreve en uygun olan yakındaki sürücüleri bulmanızı sağlar. SearchVehicles
API, filonuzdaki araçların özellikleriyle görev özelliklerini eşleştiren sürücülerin sıralı listesini döndürür.
Görev özellikleri şunları içerebilir:
- Teslim alma ve bırakma konumları
- İstenen araç ve gezi türleri
- Gereken kapasite
- Eşleşen diğer gerekli özellikler
Araç özellikleri şunları içerebilir:
- Bir aracın bilinen son konumu
- Aracın durumu, türü veya kapasitesi
- Diğer özel özellikler
Sıralama TVS, mesafe veya teslim alma noktasına kadar olan düz çizgi uzaklığı seçiminize göre sıralanır.
SearchVehicles
API'yi kullanmak için Fleet Engine Hizmeti Süper Kullanıcısı veya Tüketici SDK Kullanıcısı ayrıcalıklarına sahip olmanız gerektiğini unutmayın. Daha fazla bilgi için Kimlik Doğrulama ve Yetkilendirme bölümüne bakın.
SearchVehicles API'yi kullanma
SearchVehicles
API'yi kullanmak için:
- Atanacak göreve göre bir
SearchVehiclesRequest
oluşturun. - Oluşturulan istekle birlikte
SearchVehicles
API'yi (vehicleService.searchVehicles
) çağırın. - API'nin döndürdüğü
SearchVehicleResponse
öğesini işleyin.
SearchToolsRequest alanları
SearchVehiclesRequest
oluşturmak için aşağıdaki zorunlu özellik alanlarını kullanın:
Alan | Açıklama |
---|---|
parent | Zorunludur. Sağlayıcı/{provider} biçiminde olmalıdır. Sağlayıcı, bu çağrıyı yapan hizmet hesabının üyesi olduğu Google Cloud Projesi'nin Proje Kimliği (örneğin, sample-cloud-project) olmalıdır. |
vehicle_types | Zorunludur. Talep edilen araç türleri: OTO, İKİ_WHEELER, TAKSİ, KAMYON, BİSİKLET veya YAYA. |
trip_types | Zorunludur. DIŞLAYICI (sürücü başına her seferinde bir aktif seyahat) veya PAYLAŞILDI (sürücü başına tek seferde bir veya daha fazla seyahat). |
minimum_capacity | Zorunludur. Yolcular veya teslimatlar için aracın yeni bir görev için kalan minimum kapasitesi. |
pickup_point | Zorunludur. Enlem/boylam koordinatlarında görevin alınma konumu. |
dropoff_point | İsteğe bağlı. Enlem/boylam koordinatlarında görevin bırakma konumu. trip_types, TripType.SHARED öğesini içeriyorsa bu alan gereklidir. |
pickup_radius_meters | Zorunludur. Teslim alma noktasından araç arama alanının metre cinsinden yarıçapı. |
order_by | Zorunludur. Araçları aşağıdaki seçeneklerden birine göre sıralayın:
|
adet | Zorunludur. 1'den 50'ye kadar döndürülecek maksimum araç sayısı. |
SearchVehicleRequestfields alanının tamamını görmek için Referans belgelerine bakın.
AramaAraçlarıİstek örnekleri
Bu bölümde, SearchVehiclesRequest
oluşturmayla ilgili örnekler gösterilmektedir.
Örneğin, RestoranX restoranında ve dört araçta atanacak bir teslim alma göreviniz olduğunu varsayalım:
- 1. Araç, RestaurantX'ten 3.500 m uzaklıkta.
- RestaurantX'e 100 metre uzaklıkta bulunan ve A ve B konumlarında alma ve bırakma seçeneğiyle aktif bir seyahate sahip olan 2. Araç.
- 3. Araç, RestaurantX'ten 200 m uzaklıkta ve çok uzakta bir bırakma yeri kalmış.
- 4. Araç, RestaurantX'e 1.000 m uzaklıkta.
Aşağıdaki SearchVehiclesRequest
, Araç 4'ü döndürür:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Aşağıdaki SearchVehiclesRequest
, Araç 3 ve 4'ü döndürür:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Aşağıdaki SearchVehiclesRequest
, Araç 2, 3 ve 4'ü döndürür:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
SearchVehiclesResponse alanları
SearchVehiclesResponse
, SearchVehiclesRequest
içinde belirtilen order_by özelliğine göre sıralanan VehicleMatch
varlık listesinden oluşur.
Her VehicleMatch
varlığı aşağıdaki alanlara sahiptir:
Alan | Açıklama |
---|---|
araç | tool_id ve Vehicle özellikleri dahil olmak üzere Vehicle nesnesi. |
vehicle_pickup_eta | Yeni görevin teslim alma konumundaki aracın TVS'si. Bu, sürücü tahmini varış süresidir. |
vehicle_pickup_distance_meter | Araç ile yeni görevin teslim alınacağı yer arasındaki mesafe (metre cinsinden). |
vehicle_pickup_straight_line_distance_meter | Araç ile yeni görevin teslim alınacağı konum arasındaki düz çizgi mesafesi (metre cinsinden). |
vehicle_dropoff_eta | Yeni görevin teslim alınacağı konumdaki araç TVS'sinin Zaman Damgası. TVS'nin, sürücü TVS'dir. |
vehicle_trips_waypoints | Araca atanmış etkin geziler için kalan ara noktaların (başlama ve bırakma noktaları dahil) listesi. |
vehicle_match_type | Aracın seyahat türü: EXCLUSIVE, BACK_TO_BACK, CARPOOL veya CARPOOL_BACK_TO_BACK. |
SearchVehicles Örneği
Aşağıdaki örnekte SearchVehicles
API'nin 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.