Tworzenie podróży po kolei

Z tego dokumentu dowiesz się, jak utworzyć przejazd z przesiadką, ustawić odpowiednie pola i przypisać go do pojazdu. Zakładamy, że masz już skonfigurowany Fleet Engine, utworzone pojazdy, działającą aplikację dla kierowców i opcjonalnie aplikację dla konsumentów. Powinieneś też znać różne scenariusze przejazdów dostępne w przypadku przejazdów na żądanie. Więcej informacji znajdziesz w tych przewodnikach:

Podstawowe informacje o tworzeniu podróży

W tej sekcji opisujemy szczegóły żądania niezbędne do utworzenia przejazdu w Fleet Engine. Wysyłasz żądanie utworzenia za pomocą gRPC lub REST.

  • CreateTrip() metoda: gRPC lub REST
  • CreateTripRequest wiadomość: tylko gRPC

Pola podróży

Aby utworzyć przejazd w Fleet Engine, użyj tych pól. W przypadku różnych rodzajów przejazdów możesz używać różnych pól: przejazdów do jednego lub wielu miejsc docelowych, przejazdów bezpośrednich lub przejazdów współdzielonych. Pola opcjonalne możesz podać podczas tworzenia wycieczki lub ustawić je później, gdy będziesz aktualizować wycieczkę.

Pola dotyczące podróży
Nazwa Wymagany? Opis
parent Tak Ciąg tekstowy zawierający identyfikator projektu. Identyfikator musi być taki sam w całej integracji z Fleet Engine i musi mieć te same role konta usługi.
trip_id Tak Ciąg znaków utworzony przez Ciebie, który jednoznacznie identyfikuje tę podróż. Identyfikatory przejazdów podlegają pewnym ograniczeniom, o których mowa w dokumentacji.
trip_type Tak Ustaw wartość TripType na te wartości dla tworzonego typu przejazdu:
  • Pojedyncze miejsce docelowe: ustaw na SHARED lub EXCLUSIVE.
  • Wiele miejsc docelowych: ustaw na EXCLUSIVE.
  • Jeden po drugim: ustaw na EXCLUSIVE.
  • Pula współdzielona: ustawiona na SHARED.
pickup_point Tak Punkt początkowy podróży.
Miejsca docelowe pośrednie Tak

Tylko przejazdy z wieloma miejscami docelowymi: lista miejsc docelowych, do których kierowca jedzie między miejscem odbioru a miejscem docelowym. Podobnie jak w przypadku dropoff_point, to pole można też ustawić później, wywołując UpdateTrip, ale przejazd z wieloma miejscami docelowymi z definicji zawiera miejsca docelowe.

vehicle_waypoints Tak

Tylko przejazdy współdzielone: to pole obsługuje przeplatanie punktów pośrednich z wielu przejazdów. Zawiera wszystkie pozostałe punkty trasy przypisanego pojazdu, a także punkty odbioru i wysadzenia pasażera w przypadku tej podróży. To pole możesz ustawić, dzwoniąc pod numer CreateTrip lub UpdateTrip. Możesz też zaktualizować punkty na trasie pojazdu za pomocą pola waypoints, wywołując funkcję UpdateVehicle. Ze względu na ochronę prywatności usługa nie zwraca tych informacji w przypadku wywołań GetTrip.

number_of_passengers Nie Liczba pasażerów w podróży.
dropoff_point Nie Miejsce docelowe podróży.
vehicle_id Nie Identyfikator pojazdu przypisanego do przejazdu.

Przykład: tworzenie przejazdu bezpośrednio po innym

Poniżej pokazujemy, jak utworzyć przejazd bezpośredni i przypisać go do pojazdu. W tym przypadku tworzenie podróży jest takie samo jak w przypadku podróży do jednego miejsca docelowego. Dopiero później możesz utworzyć kolejną podróż i przypisać ją do pojazdu, który ma już aktywną podróż.

// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE)
    .setPickupPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .setVehicleId(VEHICLE_ID)
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId(TRIP_ID)
    .setTrip(trip)
    .build();

// Error handling.
try {
  // Fleet Engine automatically assigns a 'waypoints' list to the trip containing
  // the vehicle's current trip waypoints.
  Trip createdTrip =
      tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

Aktualizowanie kolejnych przejazdów

Gdy przypisujesz pojazd do kolejnej podróży, przypisujesz podróż do pojazdu, nawet jeśli jest on już przypisany do innej podróży.

Każda podróż utworzona w Fleet Engine musi być przypisana do pojazdu, aby Fleet Engine mógł obliczać szacowany czas przyjazdu i śledzić podróż. Możesz to zrobić podczas tworzenia wycieczki lub później, gdy ją zaktualizujesz.

Gdy przypiszesz przejazd do pojazdu, Fleet Engine automatycznie doda punkty trasy powiązane z przejazdami następującymi po sobie do pola punktów trasy pojazdu. Pole remainingWaypoints zawiera listę wszystkich punktów pośrednich, w tym tych z innych przejazdów, które zostaną odwiedzone przed miejscem docelowym przejazdu.

Rozważmy na przykład 2 kolejne przejazdy: przejazd Aprzejazd B. Pojazd odebrał konsumenta na potrzeby przejazdu A. W drodze do miejsca docelowego kierowca otrzymuje prośbę o odebranie innego konsumenta na potrzeby kolejnego przejazdu, przejazdu B.

  • Wywołanie getVehicle() zwraca remainingWaypoints, które zawierają:
    Drop-offPickupDrop-off.
  • Wywołanie zwrotne getTrip() lub onTripRemainingWaypointsUpdated dla przejazdu A zwraca remainingWaypoints zawierające:
    miejsce docelowe.
  • Wywołanie zwrotne getTrip() lub onTripRemainingWaypointsUpdated dla przejazdu B zwraca remainingWaypoints zawierające:
    A Miejsce doceloweB Miejsce odbioru → i B Miejsce docelowe.

Co dalej?