Funkcja planowania i wysyłania tras dostępna w ramach rozwiązania dotyczącego przejazdów i dostaw na żądanie umożliwia znajdowanie kierowców w pobliżu dzięki interfejsowi API SearchVehicles
.
Interfejs SearchVehicles
API pozwala znaleźć w aplikacji dla klientów usługi Przejazdy i dostawy w pobliżu dostępnych w pobliżu kierowców, którzy najlepiej sprawdzą się w takich zadaniach jak przewóz osób czy prośba o dostawę. Interfejs SearchVehicles
API zwraca ranking kierowców, którzy pasują do atrybutów zadań z atrybutami pojazdów należących do Twojej floty.
Atrybuty zadania mogą obejmować:
- Miejsca odbioru i zwrotu
- Wybrany pojazd i rodzaje podróży
- Wymagana pojemność
- Inne wymagane atrybuty dopasowania
Atrybuty pojazdu:
- Ostatnia znana lokalizacja pojazdu
- stan, typ lub pojemność pojazdu;
- Inne atrybuty niestandardowe
Ranking jest uporządkowany według wybranego przez Ciebie czasu dotarcia na miejsce, odległości lub odległości w linii prostej od punktu odbioru.
Aby korzystać z interfejsu SearchVehicles
API, musisz mieć uprawnienia Superużytkownik usługi Fleet Engine lub Użytkownik pakietu Consumer SDK. Więcej informacji znajdziesz w artykule na temat uwierzytelniania i autoryzacji.
Korzystanie z interfejsu SearchVehicles API
Aby użyć interfejsu API SearchVehicles
:
- Utwórz
SearchVehiclesRequest
na podstawie zadania, które ma zostać przypisane. - Wywołaj interfejs API
SearchVehicles
(vehicleService.searchVehicles
) z utworzonym żądaniem. - Przetwórz
SearchVehicleResponse
zwrócony przez interfejs API.
Pola żądania SearchVehiclesRequest
Aby utworzyć SearchVehiclesRequest
, użyj tych wymaganych pól atrybutów:
Pole | Opis |
---|---|
parent | Wymagany. Musi mieć format dostawcy/{dostawca}. Dostawca musi być identyfikatorem projektu (np. sample-cloud-project) projektu Google Cloud, którego członkiem jest konto usługi wywołujące to wywołanie. |
vehicle_types | Wymagany. Żądane typy pojazdów: AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE lub PEDESTRIAN. |
trip_types | Wymagany. EXCLUSIVE (1 aktywna podróż jednocześnie na kierowcę) lub SHARED (jedna lub kilka przejazdów naraz na kierowcę). |
minimum_capacity | Wymagany. Minimalna pozostała pojemność pojazdu w ramach nowego zadania – zarówno w przypadku pasażerów, jak i dostaw. |
pickup_point | Wymagany. Miejsce odbioru zadania we współrzędnych szerokości i długości geograficznej. |
dropoff_point | Opcjonalnie. Miejsce docelowe zadania podane we współrzędnych szerokości i długości geograficznej. To pole jest wymagane, jeśli parametr trip_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 jednego z tych kryteriów:
|
liczba | Wymagany. Maksymalna liczba pojazdów do zwrócenia – od 1 do 50. |
Kompletny zestaw klas SearchVehicleRequestfields znajdziesz w dokumentacji referencyjnej.
Przykłady żądań SearchVehiclesRequest
Ta sekcja zawiera przykłady tworzenia SearchVehiclesRequest
.
Załóżmy np., że masz zadanie odbioru do przypisania w restauracji i 4 pojazdach:
- Pojazd 1, który jest oddalony o 3500 m od RestaurantX.
- Pojazd 2, który jest oddalony o 100 m od restauracji X i obejmuje aktywny przejazd, w którym można odebrać i wysiąść w miejscach A i B.
- Pojazd 3, który znajduje się 200 m od restauracji X. Jeden pojazd został już zwrócony bardzo daleko.
- Pojazd 4, który jest oddalony o 1000 m od hotelu RestaurantX.
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 na wyszukiwanie pojazdów
Element SearchVehiclesResponse
składa się z listy elementów VehicleMatch
uporządkowanych według określonego atrybutu order_by w zasadzie SearchVehiclesRequest
.
Każdy element VehicleMatch
zawiera te pola:
Pole | Opis |
---|---|
pojazd | Obiekt Vehicle , w tym atrybuty identyfikator pojazdu i Vehicle . |
vehicle_pickup_eta | Szacowany czas dotarcia na miejsce w miejscu odbioru nowego zadania. Oto szacowany czas dotarcia na miejsce. |
vehicle_pickup_distance_meter | Odległość w metrach między pojazdem a miejscem odbioru nowego zadania. |
vehicle_pickup_straight_line_distance_meter | Odległość w linii w metrach między pojazdem a miejscem odbioru nowego zadania. |
vehicle_dropoff_eta | Sygnatura czasowa szacowanego czasu dotarcia na miejsce w miejscu odbioru nowego zadania. Pamiętaj, że szacowany czas dotarcia na miejsce to szacowany czas dotarcia na miejsce. |
vehicle_trips_waypoints | Lista pozostałych punktów na trasie, w tym miejsca odbioru i miejsca docelowego, dla aktywnych podróży aktualnie przypisanych do pojazdu. |
vehicle_match_type | Typ podróży pojazdu: EXCLUSIVE, BACK_TO_BACK, CARPOOL lub CARPOOL_BACK_TO_BACK. |
Przykład SearchPojazdy
Ten przykład pokazuje, jak użyć 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.