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 pozwala znajdować pojazdy dostępne w pobliżu w aplikacja mobilna klienta najlepiej dopasowana do konkretnego przejazdu lub dostawy. użytkownika. Interfejs API SearchVehicles zwraca rankingową listę pojazdów, których pasują do żądanych atrybutów podróży. Ranking jest ustalany według wybór między szacowanym czasem dotarcia, odległością lub odległością w linii prostej od punktu odbioru.

Wyszukaj atrybuty Atrybuty pojazdu
  • Miejsca odbioru i zwrotu
  • Żądane 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 element SearchVehiclesRequest na podstawie podróży, którą chcesz przypisać.
  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 dostawców/{dostawca}. 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. WYJĄTKOWA (jedna aktywna podróż jednocześnie na kierowcę) lub UDOSTĘPNIONA (jedna lub wiele przejazdów naraz 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. Pole jest wymagane, jeśli parametr travel_types zawiera 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, szacowany czas dotarcia pojazdu na miejsce w punkcie odbioru.
  • PICKUP_POINT_DISTANCE, odległość między pojazdem a punktem odbioru.
  • DROPOFF_POINT_ETA, czas dotarcia pojazdu na miejsce w miejscu nadania.
  • PICKUP_POINT_STRAIGHT_DISTANCE, czyli 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, które ma być stosowane przy wyszukiwaniu pojazdów.

Pełną listę funkcji znajdziesz w dokumentacji referencyjnej SearchVehicleRequest.

Scenariusze żądania SearchVehiclesRequest

W tej sekcji znajdziesz przykłady tworzenia SearchVehiclesRequest.

Załóżmy na przykład, że klient chce odebrać zamówienie z restauracji X, i masz cztery pojazdy:

  • 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.

Zwroty pojazdu 4

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

Zwroty pojazdów 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 odpowiedzi SearchProductsResponse

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 pojazd_id i Vehicle.
vehicle_pickup_eta Szacowany czas dotarcia pojazdu na miejsce w miejscu odbioru nowej podróży. To jest szacowany czas dotarcia na miejsce samochodu.
vehicle_pickup_distance_meter Odległość w metrach między pojazdem a miejscem rozpoczęcia nowej podróży.
vehicle_pickup_straight_line_distance_meter Odległość w metrach między pojazdem a miejscem odbioru nowej podróży (w metrach).
vehicle_dropoff_eta Sygnatura czasowa szacowanego czasu dotarcia pojazdu do punktu odbioru nowej trasy. Pamiętaj, że szacowany czas dotarcia na miejsce to szacowany czas dotarcia na miejsce samochodem.
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 tutaj:

Używanie zapytań filtra

SearchVehicles i ListVehicles obsługują filtrowanie 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.

Informacje o składni zapytań filtra znajdziesz w artykule AIP-160. . Szczegółowe informacje na temat tworzenia atrybutów pojazdu znajdziesz w sekcji Pojazd atrybutów w przewodniku Aktualizowanie pól pojazdu.

Przykład wyszukiwarki pojazdów

Z przykładu poniżej dowiesz się, jak korzystać z interfejsu API SearchVehicles za pomocą Biblioteka Java gRPC.

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?