Araç arayın

Mobility on-demand trip hizmeti kapsamında, SearchVehicles yöntemini kullanarak yakındaki araçları bulabilirsiniz.

SearchVehicles yöntemi, tüketici mobil uygulamanızda belirli bir yolculuğa veya teslimat isteğine en uygun, yakındaki müsait araçları bulmanızı sağlar. SearchVehicles API, özellikleri istenen seyahat özellikleriyle eşleşen araçların sıralanmış bir listesini döndürür. Sıralama, teslimat süresi, mesafe veya teslim alma noktasına olan doğrusal mesafe tercihinize göre yapılır.

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

SearchVehicles yöntemini kullanın

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

  1. Atanacak seyahate göre bir SearchVehiclesRequest oluşturun.
  2. Oluşturulan isteği kullanarak 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
üst 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. TEKLİ (sürücü başına aynı anda bir etkin yolculuk) veya ORTAK (sürücü başına aynı anda bir veya daha fazla yolculuk).
minimum_capacity Zorunludur. Yeni bir seyahat için araçta kalan minimum kapasite (yolcular veya teslimatlar için).
pickup_point Zorunludur. Gezi için teslim alma konumu (enlem/boylam koordinatları).
dropoff_point İsteğe bağlı. Yolculuğun, enlem/boylam koordinatlarıyla belirtilen teslimat konumu. trip_types TripType.SHARED değerini içeriyorsa alan gereklidir.
pickup_radius_meters Zorunludur. Araç arama alanının, teslim alma noktasından itibaren metre cinsinden yarıçapı.
order_by Zorunludur. Araçlarınızı aşağıdaki ölçütlere göre sıralayın:
  • PICKUP_POINT_ETA, aracın teslim alma noktasındaki tahmini varış zamanı.
  • PICKUP_POINT_DISTANCE, araç ile teslim noktası arasındaki mesafedir.
  • DROPOFF_POINT_ETA, aracın teslim noktasında geziyi tamamlayacağı tahmini varış zamanı.
  • PICKUP_POINT_STRAIGHT_DISTANCE, araç ile teslim alma noktası arasındaki düz çizgi mesafesi (rotadaki mesafe değil).
sayı Zorunludur. Döndürülecek maksimum araç sayısı (1 ila 50).
Filtre İsteğe bağlı. Araç araması yaparken uygulanacak filtre sorgusu.

SearchVehicleRequest alanlarının tamamını görmek için Referans dokümanlarını inceleyin.

SearchVehiclesRequest senaryoları

Bu bölümde, SearchVehiclesRequest'ün nasıl oluşturulacağına dair örnekler verilmiştir.

Örneğin, bir müşterinin RestaurantX'ten alınmasını istediğini ve dört aracınız olduğunu varsayalım:

  • 1. Araç: RestaurantX'ten 3.500 m uzakta.
  • 2. Araç: A ve B konumlarında teslim alma ve bırakma işleminin yapıldığı etkin bir seyahatle RestaurantX'ten 100 m uzaklıkta.
  • 3. Araç: X restoranından 200 m uzaklıkta, çok uzak bir yere teslimat yapması gerekiyor.
  • 4. Araç: RestaurantX'ten 1.000 m uzaklıkta.

Aşağıda, iade edilen aracın çeşitli istekleri gösterilmektedir.

Araç 4'ü iade eder

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

3. ve 4. aracı döndürme

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

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'de belirtilen order_by özelliğine göre sıralanmış VehicleMatch öğelerinin listesinden oluşur. Her VehicleMatch öğesinde aşağıdaki alanlar bulunur:

Alan Açıklama
araç vehicle_id ve Vehicle özellikleri dahil Vehicle nesnesi.
vehicle_pickup_eta Aracın yeni seyahatin teslim alma noktasındaki tahmini varış zamanı. Bu, araçla tahmini varış süresidir.
vehicle_pickup_distance_meter Araç ile yeni seyahatin teslim alma konumu arasındaki mesafe (metre cinsinden).
vehicle_pickup_straight_line_distance_meter Araç ile yeni seyahatin teslim alma konumu arasındaki düz çizgi mesafesi (metre cinsinden).
vehicle_dropoff_eta Yeni seyahatin teslim alma konumundaki araç TVS'sinin zaman damgası. TVS'nin araçla seyahat için geçerli olduğunu unutmayın.
vehicle_trips_waypoints Araç için şu anda atanan etkin seyahatlerde 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:

Filtre sorgularını kullanma

SearchVehicles ve ListVehicles, filtre sorgusu kullanarak araç özelliklerinde filtrelemeyi destekler.

Filtre sorguları YALNIZCA araçlar için özel özelliklerde filtrelemeyi destekler ve diğer alanlar için kullanılamaz. Filtre sorgusu, minimum_capacity veya vehicle_types gibi başka alan ölçütleri içeren bir aramada kullanıldığında AND ifadesi olarak işlev görür.

Örneğin, minimum kapasitesi 6 olan bir araç arıyor ve evcil hayvan kabul eden gibi bir attributes filtresi uyguluyorsanı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 sorgu söz dizimi için örneklere AIP-160 sayfasından ulaşabilirsiniz. Araç özellikleri oluşturma hakkında ayrıntılı bilgi 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, SearchVehicles API'nin Java gRPC kitaplığı kullanılarak 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.

Sırada ne var?