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 |
---|---|
|
|
Użyj metody SearchVehicles
Aby użyć SearchVehicles
, wykonaj te ogólne czynności:
- Utwórz
SearchVehiclesRequest
na podstawie przejazdu, który ma zostać przypisany. - Wywołaj interfejs
SearchVehicles
API (vehicleService.searchVehicles
) za pomocą utworzonego żądania. - 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:
|
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:
VehicleMatch message
(gRPC)VehicleMatch resource
(REST)
Korzystanie z zapytań filtra
SearchVehicles
i ListVehicles
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.