Yakındaki sürücüleri bulma

İsteğe Bağlı Yolculuk ve Teslimat Çözümünüzün bir parçası olarak, Rota Planlama ve Sevkiyat özelliği, bir SearchVehicles API sağlayarak yakındaki sürücüleri bulmanızı sağlar.

SearchVehicles API, bulunduğunuz yerdeki mevcut sürücüleri bulmanızı sağlar Belli bir göreve en uygun tüketici uygulaması, On-İsteğe Bağlı Yolculuklar ve Teslimatlar Çözümü taksi veya teslimat talebi gibi. SearchVehicles API'si döndürülüyor görev özelliklerini özelliklerle eşleşen sürücülerin sıralı listesi filonuzdaki araçların sayısı.

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 düz çizgi arasından seçiminizi yaparak sıralanır uzaklığıdır.

Fleet Engine Service Süper Kullanıcısı veya Tüketici SDK'sı Kullanıcısı olmanız gerektiğini unutmayın SearchVehicles API'yi kullanma ayrıcalıkları. Daha fazla bilgi için bkz. Authentication and Authorization (Kimlik Doğrulama ve Yetkilendirme).

SearchVehicles API'yi kullanma

SearchVehicles API'yi kullanmak için:

  • Atanacak göreve göre bir SearchVehiclesRequest oluşturun.
  • SearchVehicles API'sini (vehicleService.searchVehicles) çağırın oluşturulan istekle aynı olabilir.
  • API'den döndürülen SearchVehicleResponse dosyasını işleyin.

SearchVehiclesRequest alanları

Aşağıdaki zorunlu özellik alanlarını kullanarak SearchVehiclesRequest:

Alan Açıklama
üst 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.
sayı Zorunludur. 1'den 50'ye kadar geri dönülecek maksimum araç sayısı.

Tekliflerinin tamamını görmek için Referans belgelerine bakın. SearchVehicleRequestfields.

SearchVehiclesRequest örnekleri

Bu bölümde, SearchVehiclesRequest oluşturma örnekleri gösterilmektedir.

Örneğin, RestoranX'te atanacak bir gel-al göreviniz olduğunu varsayalım ve dört taşıt bulunuyor:

  • RestaurantX'e 3.500 m uzaklıktaki Araç 1.
  • RestaurantX'e 100 m mesafedeki ve aktif bir yolculuğu olan 2. Araç A ve B konumlarında yolcu alma ve bırakma
  • RestaurantX'e 200 m uzaklıkta olan ve bir düşüşü kalan 3. Araç çok uzakta olduğunu fark ettim.
  • 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, VehicleMatch varlık listesinden oluşur. SearchVehiclesRequest içinde belirtilen Order_by özelliğine göre sıralanır. 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 Zaman damgası yeni görevin teslim alındığı yerdeki araç TVS'si gösterilir. 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.