Araç arayın

İsteğe bağlı Mobilite gezisi hizmeti kapsamında, yakındaki araçları bulabilirsiniz. SearchVehicles yöntemini kullanın.

SearchVehicles yöntemi, yakınınızdaki mevcut araçları yakınınızdaki belirli bir yolculuk veya teslimat için uygun olan tüketici mobil uygulaması isteği gönderin. SearchVehicles API, özellikleri, istenen gezi özellikleriyle eşleşiyor. Sıralama sizin: TVS, mesafe veya düz çizgi uzaklığı arasından seçim yapabilirsiniz.

Arama Özellikleri Araç Özellikleri
  • Teslim alma ve bırakma konumları
  • İstenen araç ve seyahat türleri
  • Gerekli kapasite
  • Diğer zorunlu eşleşen özellikler
  • 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 şu genel süreci izleyin:

  1. Atanacak geziye 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 öğesini 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: OTO, İKİ_WHEELER, TAXI, KAMYON, BICYCLE veya YAYA.
trip_types Zorunludur. ÖZEL (sürücü başına aynı anda bir aktif yolculuk) 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 kalan minimum kapasitesi.
pickup_point Zorunludur. Enlem/boylam koordinatlarında seyahatin alınacağı konum.
dropoff_point İsteğe bağlı. Enlem/boylam koordinatlarında gezinin ayrılma yeri. 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 TVS'si.
  • PICKUP_POINT_DISTANCE, araç ile teslim alma noktası arasındaki mesafedir.
  • DROPOFF_POINT_ETA, aracın iniş noktasında yolculuğu tamamlamak için kullanacağı TVS.
  • PICKUP_POINT_STRAIGHT_DISTANCE, araç ile teslim alma noktası arasındaki düz çizgi mesafesi (rotadaki mesafe değil).
sayı Zorunludur. 1'den 50'ye kadar geri dönülecek maksimum araç sayısı.
Filtre İsteğe bağlı. Araç ararken uygulanacak bir filtre sorgusu.

SearchVehicleRequest alanlarının tamamını görmek için Referans belgelerine bakın.

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ç: RestaurantX'ten 200 m uzakta ve bir ayrılma süresi kaldı fark ettim.
  • 4. Araç: RestaurantX'ten 1.000 m uzaklıkta.

Aşağıda, iade ettikleri araca ait çeşitli istekler 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. Aracı döndürür

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

SearchVehiclesResponse alanları

SearchVehiclesResponse, listelenen VehicleMatch varlık listesinden oluşur. SearchVehiclesRequest içinde belirtilen "order_by" özelliğine göre. Her VehicleMatch öğesinde aşağıdaki alanlar bulunur:

Alan Açıklama
araç tool_id ve Vehicle özellikleri dahil olmak üzere Vehicle nesnesi.
vehicle_pickup_eta Aracın yeni seyahatin teslim alma noktasındaki tahmini varış zamanı. Bu, artan TVS'dir.
vehicle_pickup_distance_meter Araç ile yeni seyahatin alınacağı yer arasındaki metre cinsinden mesafe.
vehicle_pickup_straight_line_distance_meter Araç ile yeni seyahatin teslim alma konumu arasındaki metre cinsinden düz çizgi.
vehicle_dropoff_eta Zaman damgası aracın TVS'sinin yeni seyahatin teslim alınacağı konumdaki yerini belirler. TVS'nin araçla seyahat TVS'si 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.

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

ziyaret edin.

Filtre sorgularını kullanma

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

Filtre sorguları, yalnızca araçlar için özel özelliklerde filtrelemeyi destekler ve diğer alanlar için kullanılamaz. Başka alanı içeren bir aramada kullanıldığında ölçütleri (ör. minimum_capacity veya vehicle_types) bir AND yan tümcesi olarak çalışı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 sorgusu söz dizimi için AIP-160'a bakın inceleyebilirsiniz. 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 Java gRPC kitaplığı.

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?