Szukam kierowców w pobliżu

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:
  • PICKUP_POINT_ETA, szacowany czas dotarcia pojazdu na miejsce w punkcie odbioru.
  • PICKUP_POINT_DISTANCE, odległość między pojazdem a punktem odbioru.
  • DROPOFF_POINT_ETA, czas dotarcia pojazdu na miejsce w miejscu nadania.
  • PICKUP_POINT_STRAIGHT_DISTANCE, czyli odległość w linii prostej (nie na trasie) między pojazdem a punktem odbioru.
liczba Wymagany. Maksymalna liczba pojazdów do zwrócenia od 1 do 50.

Pełną listę funkcji znajdziesz w dokumentacji referencyjnej SearchVehicleRequestfields (pola żądania pojazdów w sieci wyszukiwania).

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.