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 |
---|---|
|
|
Użyj metody SearchVehicles
Aby użyć narzędzia SearchVehicles
, wykonaj te ogólne czynności:
- Utwórz element
SearchVehiclesRequest
na podstawie podróży, którą chcesz przypisać. - 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 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:
|
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.
Pojazd 4 do zwrotu
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:
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.
Informacje o składni zapytań filtra znajdziesz w artykule AIP-160. . 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.