Szukam kierowców w pobliżu

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:
  • 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ę 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.