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 dostawy, odległości lub odległości w linii prostej od punktu odbioru.
Atrybuty wyszukiwania | Atrybuty pojazdu |
---|---|
|
|
Użyj metody SearchVehicles
.
Aby korzystać z SearchVehicles
, wykonaj te ogólne czynności:
- Utwórz
SearchVehiclesRequest
na podstawie przypisanej podróży. - Wywołaj interfejs API
SearchVehicles
(vehicleService.searchVehicles
) z utworzonym żądaniem. - 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. współrzędne szerokości i długości geograficznej miejsca odbioru w podróży; |
dropoff_point | Opcjonalnie: Miejsce docelowego wyjazdu w szerokości/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:
|
liczba | Wymagany. Maksymalna liczba pojazdów do zwrócenia: od 1 do 50. |
Filtr | Opcjonalnie. Filtr do stosowania 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:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Korzystanie z zapytań filtrowania
SearchVehicles
i ListVehicles
obsługują filtrowanie według atrybutów pojazdu za pomocą zapytania filtra.
Zapytania filtra obsługują filtrowanie ATRYBÓW niestandardowych 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.