Araç arayın

Talep üzerine mobilite seyahat hizmeti kapsamında, SearchVehicles yöntemini kullanarak yakındaki araçları bulabilirsiniz.

SearchVehicles yöntemi, tüketici mobil uygulamanızda belirli bir yolculuk veya teslimat isteğine en uygun olan yakındaki araçları bulmanızı sağlar. SearchVehicles API, özellikleri istenen gezi özellikleriyle eşleşen araçların sıralı bir listesini döndürür. Sıralama, teslim alma noktasından TVS, mesafe veya düz çizgi mesafesi seçiminize göre yapılır.

Arama Özellikleri Araç Özellikleri
  • Teslim alma ve bırakma konumları
  • İstenen araç ve gezi türleri
  • Gerekli kapasite
  • Gerekli diğer eşleştirme özellikleri
  • Bir aracın bilinen son konumu
  • Aracın durumu, türü veya kapasitesi
  • Diğer özel özellikler

SearchVehicles yöntemini kullanın

SearchVehicles özelliğini kullanmak için aşağıdaki genel süreci uygulayın:

  1. Atanacak geziye göre bir SearchVehiclesRequest oluşturun.
  2. Oluşturulan istekle SearchVehicles API'sini (vehicleService.searchVehicles) çağırın.
  3. API'den döndürülen SearchVehicleResponse öğesini 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. EXCLUSIVE (sürücü başına aynı anda bir etkin gezi) veya SHARED (sürücü başına aynı anda bir veya daha fazla gezi).
minimum_capacity Zorunludur. Aracın yeni bir gezi için (yolcu veya teslimat) kalan minimum kapasitesi.
pickup_point Zorunludur. Gezinin teslim alma konumunun enlem/boylam koordinatları.
dropoff_point İsteğe bağlıdır. Gezinin bırakma konumunun enlem/boylam koordinatları. 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:
  • PICKUP_POINT_ETA: Aracın teslim alma noktasına tahmini varış süresi.
  • PICKUP_POINT_DISTANCE: Araç ile teslim alma noktası arasındaki mesafe.
  • DROPOFF_POINT_ETA: Aracın, yolculuğu bırakma noktasında tamamlamak için tahmini varış süresi.
  • PICKUP_POINT_STRAIGHT_DISTANCE, araç ile teslim alma noktası arasındaki düz çizgi mesafesi (rotada değil).
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 RestaurantX'ten alınmak istediğini ve dört aracınız olduğunu varsayalım:

  • Araç 1: RestaurantX'e 3.500 m uzaklıkta.
  • 2. Araç: RestaurantX'e 100 m uzaklıkta, A ve B konumlarında teslim alma ve bırakma işlemi olan etkin bir seyahat var.
  • 3. araç: RestaurantX'e 200 m uzaklıkta ve çok uzakta bir teslimat noktası daha var.
  • 4. araç: RestaurantX'e 1.000 m uzaklıkta.

Aşağıda, döndürdükleri araca göre çeşitli istekler gösterilmektedir.

4. Araç İade Ediliyor

     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ı

SearchVehiclesResponse, SearchVehiclesRequest içinde belirtilen order_by özelliğine göre sıralanmış VehicleMatch öğelerinin listesinden oluşur. Her VehicleMatch varlığı aşağıdaki alanlara sahiptir:

Alan Açıklama
araç vehicle_id ve Vehicle özelliklerini içeren Vehicle nesnesi.
vehicle_pickup_eta Bu seyahat ş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 gezinin teslim alma konumu arasındaki metre cinsinden düz çizgi mesafesi.
vehicle_dropoff_eta Bu seyahat şu anda araca atanırsa aracın bırakma konumuna tahmini varış süresi.
vehicle_trips_waypoints Şu anda 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:

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 örnekleri için AIP-160'a bakın. 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 Talep üzerine gezi hizmetleri için istemci kitaplıkları başlıklı makaleye bakın.

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.

Sırada ne var?