Szukaj pojazdów

W ramach usługi podróży na żądanie z mobilnością możesz znaleźć pojazdy w pobliżu za pomocą 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 API SearchVehicles zwraca rankingową listę pojazdów, których pasują do żądanych atrybutów podróży. 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.

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

Użyj metody SearchVehicles

Aby użyć narzędzia SearchVehicles, wykonaj te ogólne czynności:

  1. Utwórz SearchVehiclesRequest na podstawie przypisanej podróży.
  2. Wywołaj interfejs SearchVehicles API (vehicleService.searchVehicles) za pomocą dla utworzonego żądania.
  3. Przetwórz SearchVehicleResponse zwrócony z interfejsu API.

Pola SearchVehiclesRequest

Użyj poniższych wymaganych pól atrybutów do utworzenia SearchVehiclesRequest:

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. Zamawiane typy pojazdów: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE lub PEDESTRIAN.
trip_types Wymagany. EKSKLUZYWNY (1 aktywna przejazd na kierowcę) lub WSPÓLNY (1 lub więcej przejazdów na kierowcę).
minimum_capacity Wymagany. Minimalna pozostała pojemność pojazdu na nową podróż, zarówno w przypadku pasażerów, jak i dostaw.
pickup_point Wymagany. Miejsce odbioru podróży podane we współrzędnych geograficznych.
dropoff_point Opcjonalnie: Miejsce docelowe podróży podane we współrzędnych geograficznych. To pole jest wymagane, jeśli pole trip_types zawiera wartość TripType.SHARED.
pickup_radius_meters Wymagany. Promień w metrach obszaru wyszukiwania pojazdów od punktu odbioru.
order_by Wymagany. Zamów 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 punktem odbioru.
  • DROPOFF_POINT_ETA, przewidywany czas dojazdu pojazdu do miejsca wystawienia.
  • 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łną listę funkcji znajdziesz w dokumentacji referencyjnej SearchVehicleRequest.

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: 3500 m od restauracjiX.
  • Pojazd 2: 100 m od restauracji X z aktywną wycieczką z odbiorem i wysiąść w punktach A i B.
  • Pojazd 3: 200 m od restauracji X, a jedna osoba musi jeszcze wyjechać w odległości.
  • Pojazd 4: 1000 m od restauracji X.

Poniżej widać różne żądania wysyłane przez zwracany pojazd.

Pojazd 4 do zwrotu

     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 pojazdy 2, 3 i 4

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

Pola SearchVehiclesResponse

Element SearchVehiclesResponse składa się z VehicleMatch elementów uszeregowanych według określonego atrybutu order_by w SearchVehiclesRequest. Każdy Element 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 na trasie, w tym punktów odbioru i zwrotu, na potrzeby aktywnych obecnie podróży 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:

.

Używanie zapytań filtra

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

Filtrowanie zapytań obsługuje TYLKO filtrowanie według atrybutów niestandardowych pojazdów. nie można używać w innych polach. Używane w przypadku wyszukiwania zawierającego inne pola takie jak minimum_capacity lub vehicle_types, zapytanie filtra jako klauzulę AND.

Jeśli na przykład szukasz pojazdu z minimalną liczbą 6 osób zastosuj filtr attributes, np. przyjazne zwierzętom, kryteria zwróci tylko 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 polu 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?