Szukaj pojazdów

W ramach usługi przewozu osób na żądanie możesz znaleźć pojazdy w pobliżu, korzystając z metody SearchVehicles.

Metoda SearchVehicles umożliwia znajdowanie dostępnych pojazdów w pobliżu w aplikacji mobilnej dla klientów, które najlepiej pasują do konkretnej usługi przejazdu lub dostawy. Interfejs SearchVehicles API zwraca uporządkowaną listę pojazdów, których atrybuty pasują do żądanych atrybutów przejazdu. Ranking jest ustalany według wybranego przez Ciebie kryterium: przewidywanego czasu dojazdu, odległości lub odległości w linii prostej od punktu odbioru.

Atrybuty wyszukiwania Atrybuty pojazdu
  • Miejsca odbioru i zwrotu
  • Typy pojazdów i podróży
  • Wymagana przepustowość
  • Inne wymagane atrybuty dopasowania
  • Ostatnia znana lokalizacja pojazdu
  • stan, typ lub pojemność pojazdu;
  • Inne atrybuty niestandardowe
.

Użyj metody SearchVehicles

Aby korzystać z SearchVehicles, wykonaj te ogólne czynności:

  1. Utwórz SearchVehiclesRequest na podstawie przypisanej podróży.
  2. Wywołaj interfejs API SearchVehicles (vehicleService.searchVehicles) z utworzonym żądaniem.
  3. Przetwórz SearchVehicleResponse zwrócony przez interfejs API.

Pola SearchVehiclesRequest

Aby utworzyć SearchVehiclesRequest, użyj tych wymaganych pól atrybutów:

Pole Opis
element nadrzędny Wymagany. Musi mieć format providers/{provider}. Dostawca musi być identyfikatorem projektu Google Cloud, którego członkiem jest konto usługi wykonujące to wywołanie.
vehicle_types Wymagany. Typy pojazdów: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE lub PEDESTRIAN.
trip_types Wymagany. EXCLUSIVE (jeden aktywny przejazd na kierowcę) lub SHARED (jeden lub więcej przejazdów na kierowcę).
minimum_capacity Wymagany. Minimalna pojemność pojazdu pozostała do nowej podróży, w tym dla pasażerów lub dostaw.
pickup_point Wymagany. Miejsce odbioru w usługach w ramach współrzędnych lat/long.
dropoff_point Opcjonalnie: Miejsce docelowe podróży w szerokości i długości geograficznej. To pole jest wymagane, jeśli pole trip_types zawiera wartość TripType.SHARED.
pickup_radius_meters Wymagany. Promień obszaru wyszukiwania pojazdu w metrach od punktu odbioru.
order_by Wymagany. Uporządkuj pojazdy według jednej z tych opcji:
  • PICKUP_POINT_ETA, przewidywany czas przyjazdu pojazdu do punktu odbioru.
  • PICKUP_POINT_DISTANCE, odległość między pojazdem a miejscem odbioru.
  • DROPOFF_POINT_ETA, przewidywany czas dojazdu pojazdu do miejsca wysadzania pasażera.
  • PICKUP_POINT_STRAIGHT_DISTANCE, odległość w linii prostej (nie na trasie) między pojazdem a punktem odbioru.
liczba Wymagany. Maksymalna liczba pojazdów do zwrócenia – od 1 do 50.
Filtr Opcjonalnie. Zapytanie filtra stosowane podczas wyszukiwania pojazdów.

Pełny zestaw pól SearchVehicleRequest znajdziesz w dokumentacji referencyjnej.

Scenariusze SearchVehiclesRequest

W tej sekcji znajdziesz przykłady tworzenia elementu SearchVehiclesRequest.

Załóżmy, że klient chce zostać odebrany z restauracji X, a Ty masz 4 samochody:

  • Pojazd 1: w odległości 3500 m od restauracji RestaurantX.
  • Pojazd 2: 100 m od restauracji X z aktywnym kursem z odbiorem i odstawieniem w miejscach A i B.
  • Pojazd 3: 200 m od restauracji X z 1 pozostającymi przystankiem w dużej odległości.
  • Pojazd 4: 1000 m od restauracji X.

Poniżej wyświetlają się różne żądania według pojazdu, który je zwraca.

Zwraca Vehicle 4

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

Zwroty Pojazd 3 i 4

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

Zwraca Vehicle 2, 3, and 4

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

Pola SearchVehiclesResponse

Element SearchVehiclesResponse składa się z listy elementów VehicleMatch, uszeregowanych według atrybutu order_by podanego w elementach SearchVehiclesRequest. Każdy obiekt VehicleMatch ma te pola:

Pole Opis
pojazd Obiekt Vehicle, w tym atrybuty vehicle_id i Vehicle.
vehicle_pickup_eta Szacowany czas dotarcia pojazdu do miejsca odbioru w ramach nowej podróży. To czas dojazdu.
vehicle_pickup_distance_meter Odległość w metrach między pojazdem a miejscem odbioru w ramach nowej podróży.
vehicle_pickup_straight_line_distance_meter Odległość w linii prostej (w metrach) między pojazdem a miejscem odbioru w nowej podróży.
vehicle_dropoff_eta Znak czasu szacowanego czasu dotarcia pojazdu do miejsca odbioru w ramach nowej podróży. Pamiętaj, że szacowany czas dotarcia to czas dojazdu.
vehicle_trips_waypoints Lista pozostałych punktów pośrednich, w tym miejsc odbioru i celowych, dla aktywnych przejazdów przypisanych do pojazdu.
vehicle_match_type Typ podróży pojazdu: EXCLUSIVE, BACK_TO_BACK, CARPOOL lub CARPOOL_BACK_TO_BACK.

Pełną listę pól VehicleMatch znajdziesz w tych artykułach:

Korzystanie z zapytań filtrowania

SearchVehiclesListVehicles obsługują filtrowanie według atrybutów pojazdu za pomocą zapytania filtra.

Zapytania filtra obsługują filtrowanie ATRYBÓW niestandardowych dotyczących pojazdów TYLKO w przypadku pojazdów. Nie można ich używać w przypadku innych pól. Gdy jest używany w wyszukiwaniu, które zawiera inne kryteria pola, takie jak minimum_capacity lub vehicle_types, zapytanie filtra działa jak klauzula AND.

Jeśli na przykład szukasz pojazdu o minimalnej pojemności 6 osób i filtrujesz attributes, np. ze względu na zwierzęta, kryteria zwrócą tylko te pojazdy, które są przyjazne zwierzętom i mogą pomieścić co najmniej 6 pasażerów.

Składnię zapytania filtra znajdziesz w artykule AIP-160 (w języku angielskim) wraz z przykładami. Szczegółowe informacje o tworzeniu atrybutów pojazdu znajdziesz w sekcji Pola atrybutów pojazdu w przewodniku Aktualizowanie pól pojazdu.

Przykład SearchVehicles

W tym przykładzie pokazano, jak korzystać z interfejsu API SearchVehicles za pomocą biblioteki gRPC w języku Java.

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.

Co dalej?