Tworzenie podróży po kolei

Z tego dokumentu dowiesz się, jak utworzyć przejazd w obie strony, ustawić odpowiednie pola i przypisać go do pojazdu, który ma go zrealizować. Zakładamy, że masz skonfigurowaną usługę Fleet Engine, utworzone pojazdy, działającą aplikację kierowcy i (opcjonalnie) aplikację dla użytkowników indywidualnych. Musisz też znać różne plany podróży dostępne w przypadku podróży na żądanie. Zapoznaj się z tymi przewodnikami:

Podstawowe informacje o tworzeniu podróży

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

  • Metoda CreateTrip(): gRPC lub REST
  • Komunikat CreateTripRequest: tylko gRPC

Pola dotyczące 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 z jednym lub wieloma miejscami docelowymi, przejazdów z powrotem lub przejazdów współdzielonych. Pola opcjonalne można podać podczas tworzenia podróży lub ustawić je później podczas aktualizowania podróży.

Pola dotyczące podróży
Nazwa Wymagany? Opis
parent Tak Ciąg tekstowy zawierający identyfikator projektu. Identyfikator musi być taki sam we wszystkich integracjach z Fleet Engine, z tymi samymi rolami konta usługi.
trip_id Tak Tworzony przez Ciebie ciąg znaków, który jednoznacznie identyfikuje tę podróż. Identyfikatory podróży podlegają pewnym ograniczeniom, o których mowa w dokumentacji.
trip_type Tak W polu TripType ustaw te wartości dla tworzonego typu podróży:
  • Jedno miejsce docelowe: ustaw wartość na SHARED lub EXCLUSIVE.
  • Wiele miejsc docelowych: ustaw wartość EXCLUSIVE.
  • Back-to-back (z powrotem): ustaw na EXCLUSIVE.
  • Wspólne udostępnianie: ustaw SHARED.
pickup_point Tak Punkt początkowy podróży.
Miejsca docelowe pośrednie Tak

Tylko podróże do wielu miejsc docelowych: lista pośrednich miejsc docelowych, które kierowca odwiedza pomiędzy odbiorem a wyjazdem do miejsca docelowego. Tak jak w przypadku dropoff_point, to pole można ustawić później, wywołując UpdateTrip. W przypadku podróży do wielu miejsc docelowych z definicji znajdują się miejsca docelowe pośrednie.

vehicle_waypoints Tak

Tylko podróże w ramach wspólnego puli: to pole obsługuje przeplatanie punktów pośrednich z wielu przejazdów. Zawiera wszystkie pozostałe punkty pośrednie dla przypisanego pojazdu, a także punkty odbioru i zwrotu w ramach tej podróży. To pole możesz ustawić, wywołując funkcję CreateTrip lub UpdateTrip. Możesz też aktualizować punkty pośrednie pojazdu w polu waypoints, wywołując UpdateVehicle. Ze względu na ochronę prywatności usługa nie zwraca tych informacji w wywołaniach funkcji GetTrip.

number_of_passengers Nie Liczba pasażerów na trasie.
dropoff_point Nie Cel podróży.
vehicle_id Nie Identyfikator pojazdu przypisanego do podróży.

Przykład: utworzenie przejazdu w obie strony

Poniżej pokazujemy, jak utworzyć podróż w obie strony i przypisać ją do pojazdu. W tym scenariuszu tworzenie podróży przebiega tak samo jak w przypadku podróży do jednego miejsca docelowego. Dopiero później tworzysz kolejną podróż i przypisujesz ją do pojazdu z 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;
}

Aktualizacja informacji o podróżach z wielu przystankami

Przypisując pojazd do przejazdu w obie strony, przypisujesz przejazd do pojazdu, nawet jeśli został on już przypisany.

Każda podróż utworzona we Fleet Engine musi być przypisana do pojazdu, aby usługa Fleet Engine mogła obliczać szacowany czas dotarcia na miejsce i go śledzić. Możesz to zrobić podczas tworzenia podróży lub później, gdy ją aktualizujesz.

Po przypisaniu przejazdu do pojazdu Fleet Engine automatycznie dodaje punkty pośrednie powiązane z pojazdami z kolei do pola Punkty pośrednie pojazdu. Pole remainingWaypoints podróży zawiera listę wszystkich punktów na trasie, w tym tych z innych podróży, które zostaną odwiedzone przed zakończeniem podróży.

Weźmy na przykład 2 podróże z rzędu: Trip ATrip B. Pojazd zabrał klienta na Podróż A, a w drodze do miejsca zwrotu kierowca otrzymuje prośbę o zabranie kolejnego klienta na następną podróż, podróż B.

  • Wywołanie getVehicle() zwraca remainingWaypoints, które zawierają:
    A Odbiór →B Odbiór →B Odbiór.
  • Wywołanie zwrotne getTrip() lub onTripRemainingWaypointsUpdated dla Podróży A zwraca remainingWaypoints, które zawiera:
    A Drop-off.
  • getTrip() lub wywołanie onTripRemainingWaypointsUpdatedpodróży B zwraca remainingWaypoints, które zawierają:
    Odbiór AOdbiór BOdbiór B.

Co dalej?