Szukaj pojazdów

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

Metoda SearchVehicles umożliwia znajdowanie w aplikacji mobilnej dla klientów dostępnych pojazdów w pobliżu, które najlepiej nadają się do realizacji konkretnego przejazdu lub dostawy. Interfejs API SearchVehicles zwraca uporządkowaną listę pojazdów, których atrybuty pasują do atrybutów żądanego przejazdu. Ranking jest uporządkowany według wybranego przez Ciebie szacowanego czasu dotarcia na miejsce, odległości lub odległości w linii prostej od punktu odbioru.

Atrybuty wyszukiwania Atrybuty pojazdu
  • Miejsca odbioru i nadania
  • żądany typ pojazdu i przejazdu,
  • Wymagana pojemność
  • Inne wymagane atrybuty dopasowania
  • ostatnią znaną lokalizację pojazdu,
  • stan, typ lub ładowność pojazdu;
  • Inne atrybuty niestandardowe

Użyj metody SearchVehicles

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

  1. Utwórz obiekt SearchVehiclesRequest na podstawie przejazdu, który ma zostać przypisany.
  2. Wywołaj interfejs API SearchVehicles (vehicleService.searchVehicles) za pomocą utworzonego żądania.
  3. Przetwórz obiekt SearchVehicleResponse zwrócony przez interfejs API.

Pola SearchVehiclesRequest

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

Pole Opis
rodzic Wymagany. Musi mieć format providers/{provider}. Dostawcą musi być identyfikator projektu Google Cloud, którego członkiem jest konto usługi wykonujące to wywołanie.
vehicle_types Wymagany. Typy pojazdów, o które proszono: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE lub PEDESTRIAN.
trip_types Wymagany. EXCLUSIVE (1 aktywny przejazd na kierowcę) lub SHARED (1 lub więcej przejazdów na kierowcę).
minimum_capacity Wymagany. Minimalna pozostała pojemność pojazdu na potrzeby nowego przejazdu, zarówno w przypadku pasażerów, jak i dostaw.
pickup_point Wymagany. Miejsce odbioru pasażera podczas przejazdu we współrzędnych szerokości i długości geograficznej.
dropoff_point Opcjonalnie: Lokalizacja miejsca nadania przesyłki podczas przejazdu we współrzędnych szerokości i długości geograficznej. To pole jest wymagane, jeśli trip_types zawiera TripType.SHARED.
pickup_radius_meters Wymagany. Promień obszaru wyszukiwania pojazdu od punktu odbioru (w metrach).
order_by Wymagany. Uporządkuj pojazdy według jednej z tych opcji:
  • PICKUP_POINT_ETA, szacowany czas dotarcia pojazdu do punktu odbioru.
  • PICKUP_POINT_DISTANCE, odległość między pojazdem a punktem odbioru.
  • DROPOFF_POINT_ETA, czyli szacowany czas dotarcia pojazdu do miejsca wysiadania 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 do zastosowania podczas wyszukiwania pojazdów.
maximum_staleness Opcjonalnie. Ogranicza wyszukiwanie tylko do tych pojazdów, które wysłały informację o zmianie lokalizacji do Fleet Engine w określonym czasie. Jeśli to pole nie jest ustawione, serwer używa domyślnej wartości 5 minut.

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

Scenariusze SearchVehiclesRequest

W tej sekcji znajdziesz przykłady tworzenia elementu SearchVehiclesRequest.

Załóżmy na przykład, że klient chce zostać odebrany z RestauracjiX, a Ty masz 4 pojazdy:

  • Pojazd 1: 3500 m od RestauracjiX.
  • Pojazd 2: 100 m od restauracji X, aktywny przejazd z odbiorem i wysiadaniem w lokalizacjach A i B.
  • Pojazd 3: 200 m od restauracji X, z jednym pozostałym miejscem dostawy bardzo daleko.
  • Pojazd 4: 1000 m od RestauracjiX.

Poniżej przedstawiamy różne żądania według zwracanego pojazdu.

Zwraca pojazd 4

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

Zwraca pojazdy 3 i 4.

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

Zwraca pojazdy 2, 3 i 4.

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

Pola SearchVehiclesResponse

SearchVehiclesResponse składa się z listy encji VehicleMatch uporządkowanych według określonego atrybutu order_by w SearchVehiclesRequest. Każdy element VehicleMatch zawiera te pola:

Pole Opis
pojazd Obiekt Vehicle, w tym atrybuty vehicle_id i Vehicle.
vehicle_pickup_eta Szacowany czas dotarcia pojazdu do miejsca odbioru, jeśli ten przejazd zostałby przypisany do pojazdu w tym momencie.
vehicle_pickup_distance_meter Odległość w metrach między pojazdem a miejscem odbioru nowego przejazdu.
vehicle_pickup_straight_line_distance_meter Odległość w linii prostej w metrach między pojazdem a miejscem odbioru nowego przejazdu.
vehicle_dropoff_eta Szacowany czas dotarcia pojazdu do miejsca wysiadania, gdyby ten przejazd został przypisany do pojazdu w tym momencie.
vehicle_trips_waypoints Lista pozostałych punktów na trasie, w tym punktów odbioru i wysiadania, dla aktywnych przejazdów przypisanych obecnie do pojazdu.
vehicle_match_type Typ przejazdu pojazdu: EXCLUSIVE, BACK_TO_BACK, CARPOOL lub CARPOOL_BACK_TO_BACK.

Pełną listę pól VehicleMatch znajdziesz tutaj:

Korzystanie z zapytań dotyczących filtrowania

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

Zapytania filtra obsługują TYLKO filtrowanie według atrybutów niestandardowych pojazdów i nie można ich używać w przypadku innych pól. Jeśli zapytanie filtra jest używane w wyszukiwaniu, które obejmuje inne kryteria pól, takie jak minimum_capacity lub vehicle_types, działa ono jak klauzula AND.

Jeśli na przykład wyszukasz pojazd, który może pomieścić co najmniej 6 osób, i zastosujesz filtr attributes, np. „przyjazny dla zwierząt”, kryteria wyszukiwania zwrócą tylko te pojazdy, które są przyjazne dla zwierząt i mogą przewozić co najmniej 6 pasażerów.

Przykłady składni zapytań filtra znajdziesz w artykule AIP-160. Szczegółowe informacje o tworzeniu atrybutów pojazdów znajdziesz w sekcji Pole atrybutów pojazdu w przewodniku Aktualizowanie pól pojazdu.

Przykład SearchVehicles

Poniższy przykład pokazuje, jak korzystać z interfejsu API SearchVehicles za pomocą biblioteki gRPC w języku Java. Pełną listę obsługiwanych języków znajdziesz w artykule Biblioteki klienta usług przejazdów na żądanie.

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?