Araç arayın

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

SearchVehicles yöntemi, tüketici mobil uygulamanızda yakındaki uygun araçları bulmanıza olanak tanır. Bu araçlar, belirli bir yolculuk veya teslimat isteği için en uygun olanlardır. SearchVehicles API, özellikleri istenen gezi özellikleriyle eşleşen araçların sıralanmış bir listesini döndürür. Sıralama, tahmini varış zamanı, mesafe veya teslim alma noktasından düz çizgi mesafesi seçeneklerinden birine göre yapılır.

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

SearchVehicles yöntemini kullanma

SearchVehicles'yı kullanmak için genel olarak şu süreci izleyin:

  1. Atanacak geziye göre bir SearchVehiclesRequest oluşturun.
  2. Oluşturulan istekle SearchVehicles API'yi (vehicleService.searchVehicles) çağırın.
  3. API'den döndürülen SearchVehicleResponse değerini 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. ÖZEL (sürücü başına tek seferde bir etkin yolculuk) veya PAYLAŞIMLI (sürücü başına tek seferde bir veya birden fazla yolculuk) olabilir.
minimum_capacity Zorunludur. Yeni bir yolculuk için aracın minimum kalan kapasitesi (yolcular veya teslimatlar için).
pickup_point Zorunludur. Gezinin enlem/boylam koordinatları cinsinden teslim alma konumu.
dropoff_point İsteğe bağlıdır. Gezinin teslim etme konumu (enlem/boylam koordinatları). trip_types, TripType.SHARED değerini içeriyorsa bu alan zorunludur.
pickup_radius_meters Zorunludur. Aracın, teslim alma noktasından itibaren arama yaptığı alanı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ış zamanı.
  • PICKUP_POINT_DISTANCE: Araç ile teslim alma noktası arasındaki mesafe.
  • DROPOFF_POINT_ETA: Aracın, yolculuğu bırakma noktasında tamamlaması için tahmini varış zamanı.
  • 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 ile 50 arasındadır.
filtre İsteğe bağlı. Araç ararken uygulanacak bir 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: X restoranına 3.500 metre uzaklıkta.
  • 2. Araç: A ve B konumlarında yolcu alma ve bırakma işlemleriyle etkin bir geziyle RestaurantX'ten 100 metre uzakta.
  • Araç 3: RestaurantX'ten 200 metre uzakta ve çok uzak bir yerde bir teslimat noktası kaldı.
  • Araç 4: RestaurantX'ten 1.000 metre uzakta.

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

Returns Vehicle 4

     Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
    

3. ve 4. 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ı

Bir SearchVehiclesResponse, SearchVehiclesRequest içindeki belirtilen order_by özelliğine göre sıralanmış VehicleMatch öğelerinin listesinden oluşur. Her VehicleMatch varlığında aşağıdaki alanlar bulunur:

Alan Açıklama
araç vehicle_id ve Vehicle özelliklerini içeren Vehicle nesnesi.
vehicle_pickup_eta Bu gezi şu anda araca atanırsa aracın teslim alma konumuna tahmini varış zamanı.
vehicle_pickup_distance_meter Araç ile yeni yolculuğun alınma konumu arasındaki mesafe (metre cinsinden).
vehicle_pickup_straight_line_distance_meter Araç ile yeni yolculuğun alınacağı konum arasındaki düz çizgi mesafesi (metre cinsinden).
vehicle_dropoff_eta Bu gezi şu anda araca atanırsa aracın bırakma konumuna tahmini varış zamanı.
vehicle_trips_waypoints Araca şu anda atanmış etkin geziler için teslim 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).

VehicleMatch alanlarının tam listesi için:

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ç arayıp evcil hayvan dostu gibi bir attributes filtre uygularsanız ölçütleriniz yalnızca hem evcil hayvan dostu olan hem de en az 6 yolcu taşıyabilen araçları döndürür.

Filtre sorgusu söz dizimi için AIP-160'ı inceleyin. Örnekler için. Araç özellikleri oluşturmayla ilgili ayrıntılar için Araç alanlarını güncelleme kılavuzundaki Araç özellikleri alanı bölümünü inceleyin.

SearchVehicles örneği

Aşağıdaki örnekte, SearchVehicles API'nin Java gRPC kitaplığı kullanılarak nasıl kullanılacağı gösterilmektedir. Desteklenen dillerin tam listesi için İsteğe bağlı seyahat 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?