Yakındaki sürücüleri bulma

İ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 yeri.
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:
  • PICKUP_POINT_ETA, aracın teslim alma noktasındaki TVS'si.
  • PICKUP_POINT_DISTANCE, araç ile teslim alma noktası arasındaki mesafe.
  • DROPOFF_POINT_ETA, aracın kalkış noktasında yolculuğu tamamlamak için kullanacağı TVS.
  • PICKUP_POINT_STRAIGHT_DISTANCE, araç ile teslim noktası arasındaki düz çizgi (rotada değil) mesafedir.
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.