W ramach usługi dotyczącej przejazdów i dostaw na żądanie funkcja planowania trasy i wysyłki pozwala znaleźć kierowców w pobliżu za pomocą interfejsu API SearchVehicles
.
Interfejs API SearchVehicles
umożliwia znajdowanie kierowców w pobliżu w aplikacji dla konsumentów dostępnej na żądanie w ramach usługi Przewóz osób i dostaw, którzy najlepiej nadają się do konkretnego zadania, takiego jak przewóz czy prośba o dostawę. Interfejs API SearchVehicles
zwraca ranking kierowców pasujących do atrybutów zadań i atrybutów pojazdów należących do Twojej floty.
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 uzależniony od wyboru czasu dotarcia na miejsce, odległości od punktu odbioru lub odległości w linii prostej od miejsca odbioru.
Aby korzystać z interfejsu SearchVehicles
API, musisz mieć uprawnienia superużytkownika lub użytkownika pakietu SDK usługi Fleet Engine. Więcej informacji znajdziesz w artykule na temat uwierzytelniania i autoryzacji.
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
) za pomocą utworzonego żądania. - Przetwórz
SearchVehicleResponse
zwrócony z interfejsu API.
Pola SearchVehiclesRequest
Użyj tych wymaganych pól atrybutów, aby utworzyć SearchVehiclesRequest
:
Pole | Opis |
---|---|
parent | 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ę SearchVehicleRequestfields znajdziesz w dokumentacji referencyjnej.
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 pojazdach:
- Pojazd 1, który znajduje się 3500 m od restauracji X.
- Pojazd 2, który znajduje się 100 m od restauracji X i trwa wycieczka z odbiorem i zwrotem w lokalizacjach A i B.
- Pojazd 3, który jest w odległości 200 m od restauracji X, a jedna z nich jest 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
Element SearchVehiclesResponse
składa się z listy elementów VehicleMatch
ułożonych 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 czasu dotarcia pojazdu 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.