İ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ızı sağlar.
SearchVehicles
API, İsteğe Bağlı Yolculuklar ve Teslimat Çözümü tüketici uygulamanızda, yolculuk veya teslimat talebi gibi bir göreve en uygun olan yakındaki sürücüleri bulmanızı sağlar. SearchVehicles
API, görev özelliklerini filonuzdaki araçların özellikleriyle eşleşen 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 seyahat türleri
- Gerekli kapasite
- Diğer gerekli eşleşme özellikleri
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ından düz çizgi olarak tercih ettiğiniz mesafeye göre sıralanır.
SearchVehicles
API'yi kullanmak için Fleet Engine Hizmeti Süper Kullanıcısı veya Tüketici SDK'sı 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'den döndürülen
SearchVehicleResponse
dosyasını işleyin.
SearchVehiclesRequest alanları
SearchVehiclesRequest
oluşturmak için aşağıdaki zorunlu özellik alanlarını kullanın:
Alan | Açıklama |
---|---|
parent | Zorunludur. provider/{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 (ör. sample-cloud-project) olmalıdır. |
vehicle_types | Zorunludur. İstenen araç türleri: OTO, İKİ_WHEELER, TAXI, KAMYON, BICYCLE veya YAYA. |
trip_types | Zorunludur. ÖZEL (sürücü başına aynı anda bir aktif gezi) veya PAYLAŞILAN (sürücü başına bir defada bir veya daha fazla yolculuk). |
minimum_capacity | Zorunludur. Yolcular veya teslimatlar için aracın yeni bir görev için kalan minimum kapasitesi. |
pickup_point | Zorunludur. Görevin enlem/boylam koordinatlarında alınma konumu. |
dropoff_point | İsteğe bağlı. Görevin enlem/boylam koordinatlarında bırakma konumu. Trip_types TripType.SHARED içeriyorsa bu alan zorunludur. |
pickup_radius_meters | Zorunludur. Teslim alma noktasından araç arama alanının metre cinsinden yarıçapı. |
order_by | Zorunludur. Araçları aşağıdakilerden birine göre sipariş edin:
|
adet | Zorunludur. 1'den 50'ye kadar geri dönülecek maksimum araç sayısı. |
SearchVehicleRequestfields alanlarının tamamını görmek için Referans belgelerine bakın.
SearchVehiclesRequest örnekleri
Bu bölümde, SearchVehiclesRequest
oluşturma örnekleri gösterilmektedir.
Örneğin, RestoranX’te atanacak bir teslim alma göreviniz olduğunu ve dört araç olduğunu varsayalım:
- RestaurantX'e 3.500 m uzaklıktaki Araç 1.
- RestaurantX'e 100 m mesafedeki ve A ve B konumlarında yolcu alma ve bırakma seçeneği olan aktif bir seyahatin bulunduğu 2. Araç.
- RestaurantX'ten 200 m uzaklıktaki ve çok uzakta bir indirmesi kalmış 3. Araç.
- RestaurantX'e 1.000 m uzaklıktaki 4. Araç.
Aşağıdaki SearchVehiclesRequest
, 4. Aracı döndürür:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
Aşağıdaki SearchVehiclesRequest
, 3. ve 4. Aracı döndürür:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
Aşağıdaki SearchVehiclesRequest
, 2, 3 ve 4 numaralı Aracı 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 | Aracın yeni görevin teslim noktasındaki TVS'si. Bu, artan TVS'dir. |
vehicle_pickup_distance_meter | Araç ile yeni görevin teslim alma konumu arasındaki metre cinsinden mesafe. |
vehicle_pickup_straight_line_distance_meter | Araç ile yeni görevin teslim alma konumu arasındaki metre cinsinden düz çizgi. |
vehicle_dropoff_eta | Yeni görevin teslim alınacağı konumdaki araç TVS'sinin zaman damgası. TVS'nin, araba ETA olduğunu unutmayın. |
vehicle_trips_waypoints | Halihazırda araca atanmış etkin yolculuklar için 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. |
Araç Arama Ö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.