W ramach usługi Przejazdy na żądanie w ramach usługi Planowanie i wysyłka trasy
pozwala znajdować kierowców w pobliżu dzięki interfejsowi API SearchVehicles
.
Interfejs SearchVehicles
API pozwala znaleźć dostępnych kierowców w pobliżu
Aplikacja dla użytkowników indywidualnych rozwiązań w zakresie przejazdów i dostaw na żądanie, która najlepiej sprawdza się w konkretnym zadaniu
np. o przejazd lub dostawę. Interfejs SearchVehicles
API zwraca
rankingowa lista kierowców pasujących do atrybutów zadań z atrybutami
pojazdów w Twojej flocie.
Atrybuty zadań mogą obejmować:
- Miejsca odbioru i zwrotu
- Żądane typy pojazdów i podróży
- Wymagana pojemność
- Inne wymagane atrybuty dopasowania
Atrybuty pojazdu mogą obejmować:
- Ostatnia znana lokalizacja pojazdu
- Stan, typ lub pojemność pojazdu
- Inne atrybuty niestandardowe
Ranking jest uporządkowany według przewidywanego czasu dotarcia na miejsce, odległości lub linii prostej. odległość od punktu odbioru.
Pamiętaj, że musisz mieć superużytkownika lub użytkownika pakietu SDK usługi Fleet Engine
uprawnienia do korzystania z interfejsu API SearchVehicles
. Więcej informacji:
Authentication and Authorization (Uwierzytelnianie i autoryzacja).
Korzystanie z interfejsu SearchVehicles API
Aby używać interfejsu API SearchVehicles
:
- Utwórz
SearchVehiclesRequest
na podstawie zadania do przypisania. - Wywołaj interfejs
SearchVehicles
API (vehicleService.searchVehicles
) z utworzonym żądaniem. - 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 (np. sample-cloud-project) projektu Google Cloud, do którego należy konto usługi wywołują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 nowe zadanie (dotyczy to pasażerów lub dostaw). |
pickup_point | Wymagany. Lokalizacja odbioru zadania podana we współrzędnych geograficznych. |
dropoff_point | Opcjonalnie: Lokalizacja miejsca zwrotu zadania podana 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. |
Pełną listę funkcji znajdziesz w dokumentacji referencyjnej SearchVehicleRequestfields (pola zapytań pojazdów).
Przykładowe żądania SearchPojazdu
W tej sekcji znajdziesz przykłady tworzenia SearchVehiclesRequest
.
Załóżmy na przykład, że masz przypisane zadanie odbioru w restauracjiX. i 4 pojazdy:
- Pojazd 1, który znajduje się 3500 m od restauracji X.
- Pojazd 2, który znajduje się 100 m od restauracjiX i jest aktywny podczas podróży. z opcją odbioru i zwrotu w lokalizacjach A i B.
- Pojazd 3, który znajduje się w odległości 200 m od restauracji X, a jednak jeszcze nie ma go w pobliżu. bardzo daleko.
- Pojazd 4, który znajduje się 1000 m od restauracji X.
SearchVehiclesRequest
zwraca pojazd 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
SearchVehiclesRequest
zwraca pojazd 3 i 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
SearchVehiclesRequest
zwraca pojazd 2, 3 i 4:
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
Pola odpowiedzi SearchProductsResponse
SearchVehiclesResponse
składa się z listy VehicleMatch
elementów,
posortowane według określonego atrybutu order_by w tabeli 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 nowego zadania. To jest szacowany czas dotarcia na miejsce samochodu. |
vehicle_pickup_distance_meter | Wyrażona w metrach odległość między pojazdem a miejscem odbioru nowego zadania. |
vehicle_pickup_straight_line_distance_meter | Odległość w metrach między pojazdem a miejscem odbioru nowego zadania (w metrach). |
vehicle_dropoff_eta | Sygnatura czasowa szacowanego czasu dotarcia pojazdu na miejsce w miejscu odbioru nowego zadania. 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. |
Przykład wyszukiwarki pojazdów
Poniższy przykład pokazuje, jak używać interfejsu API SearchVehicles
:
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.