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 |
---|---|
|
|
Użyj metody SearchVehicles
Aby użyć narzędzia SearchVehicles
, wykonaj te ogólne czynności:
- Utwórz
SearchVehiclesRequest
na podstawie przypisanej podróży. - Wywołaj interfejs
SearchVehicles
API (vehicleService.searchVehicles
) za pomocą dla utworzonego żądania. - 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:
|
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:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Używanie zapytań filtra
SearchVehicles
i ListVehicles
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.