Szukaj pojazdów

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

Metoda SearchVehicles umożliwia znajdowanie w aplikacji mobilnej dla konsumentów dostępnych w pobliżu pojazdów, które najlepiej pasują do konkretnego przejazdu lub zamówienia dostawy. Interfejs SearchVehicles API zwraca uporządkowaną listę pojazdów, których atrybuty pasują do atrybutów żądanej podróży. Kolejność jest określana na podstawie wybranego przez Ciebie kryterium: szacowanego czasu przyjazdu, odległości lub odległości w linii prostej od miejsca odbioru.

Wyszukaj atrybuty Atrybuty pojazdu
  • Miejsca odbioru i zwrotu
  • Rodzaje pojazdów i przejazdów, których dotyczy prośba
  • 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ć SearchVehicles, wykonaj te ogólne czynności:

  1. Utwórz SearchVehiclesRequest na podstawie przejazdu, który ma zostać przypisany.
  2. Wywołaj interfejs SearchVehicles API (vehicleService.searchVehicles) za pomocą utworzonego żądania.
  3. Przetwórz wartość SearchVehicleResponse zwróconą 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. Rodzaje pojazdów, o które prosisz: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE lub PEDESTRIAN.
trip_types Wymagany. Może to być EXCLUSIVE (1 aktywna podróż na kierowcę) lub SHARED (1 lub więcej podróży na kierowcę).
minimum_capacity Wymagany. Minimalna pozostała pojemność pojazdu na nową podróż, zarówno w przypadku przewozu pasażerów, jak i dostaw.
pickup_point Wymagany. Miejsce odbioru w podróży podane we współrzędnych szerokości i długości geograficznej.
dropoff_point Opcjonalnie. Lokalizacja zakończenia przejazdu w postaci 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ń w metrach obszaru wyszukiwania pojazdów od miejsca odbioru.
order_by Wymagany. Uporządkuj pojazdy według jednego z tych kryteriów:
  • PICKUP_POINT_ETA, szacowany czas dotarcia pojazdu do punktu odbioru.
  • PICKUP_POINT_DISTANCE, czyli odległość między pojazdem a miejscem odbioru.
  • DROPOFF_POINT_ETA, szacowany czas dotarcia pojazdu do punktu docelowego.
  • 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 w określonym czasie wysłały do Fleet Engine aktualizacje lokalizacji. Jeśli to pole nie jest skonfigurowane, 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 SearchVehiclesRequest.

Załóżmy na przykład, że klient chce, aby go odebrać z restauracji X, a Ty masz 4 pojazdy:

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

Poniżej przedstawiamy różne żądania według pojazdu, który je zwraca.

Returns Vehicle 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 VehicleMatch elementów uporządkowanych według atrybutu order_by określonego w SearchVehiclesRequest. Każdy podmiot VehicleMatch ma te pola:

Pole Opis
pojazd Obiekt Vehicle, w tym atrybuty vehicle_id i Vehicle.
vehicle_pickup_eta Szacowany czas przyjazdu pojazdu do miejsca odbioru, gdyby ta podróż została przypisana do pojazdu w tej chwili.
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 metrach w linii prostej między pojazdem a miejscem odbioru nowego przejazdu.
vehicle_dropoff_eta Szacowany czas przyjazdu pojazdu do miejsca docelowego, gdyby ta podróż została mu przypisana w tej chwili.
vehicle_trips_waypoints Lista pozostałych punktów na trasie, w tym miejsc odbioru i docelowych, w przypadku 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 w tych dokumentach:

Korzystanie z zapytań filtra

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

Zapytania dotyczące filtrowania obsługują TYLKO filtrowanie według atrybutów niestandardowych pojazdów i nie mogą być używane w przypadku innych pól. Jeśli filtr jest używany w wyszukiwaniu, które zawiera inne kryteria pola, np. minimum_capacity lub vehicle_types, zapytanie filtra działa jak klauzula AND.

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

Przykłady składni zapytań filtra znajdziesz w AIP-160. Więcej informacji o tworzeniu atrybutów pojazdu 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.

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?