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 skonfigurowany Fleet Engine, utworzyłeś pojazdy, masz działającą aplikację dla kierowcy i opcjonalnie aplikację dla klienta. Powinieneś też znać różne scenariusze przejazdów dostępne w przypadku przejazdów na żądanie. Zapoznaj się z tymi przewodnikami:

Podstawowe informacje o tworzeniu podróży

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

  • Metoda CreateTrip(): gRPC lub REST
  • CreateTripRequest komunikat: dotyczy 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żesz podać podczas tworzenia podróży lub ustawić je później podczas jej aktualizowania.

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 Ustaw TripType na jedną z tych wartości, aby utworzyć odpowiedni typ podróży:
  • Jedno miejsce docelowe: ustaw wartość na SHARED lub EXCLUSIVE.
  • Wiele miejsc docelowych: ustaw na EXCLUSIVE.
  • Back-to-back (z powrotem): ustaw na EXCLUSIVE.
  • Udostępnianie zasobów: ustaw na SHARED.
pickup_point Tak Punkt początkowy podróży.
Miejsca docelowe pośrednie Tak

Tylko w przypadku podróży z wieloma miejscami docelowymi: lista miejsc docelowych pośrednich, które kierowca odwiedza w międzyczasie przejazdu od miejsca odbioru do miejsca docelowego. Podobnie jak w przypadku dropoff_point to pole można też ustawić później, wywołując funkcję UpdateTrip, ale podróż z wieloma miejscami docelowymi z definicji zawiera miejsca docelowe pośrednie.

vehicle_waypoints Tak

Tylko w przypadku przejazdów współdzielonych: to pole obsługuje przeplatanie punktów pośrednich z różnych 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ż zaktualizować punkty drogi 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: utworzenie przejazdu w obie strony

Ten film pokazuje, jak utworzyć przejazd w obie strony i przypisać go 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 podróży powrotnej, przypisujesz podróż do pojazdu, nawet jeśli został on już przypisany.

Aby Fleet Engine mógł obliczyć przewidywany czas dojazdu i śledzić go, każda podróż utworzona w Fleet Engine musi zostać przypisana do pojazdu. 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 pośrednich, w tym tych z innych podróży, które zostaną odwiedzone przed zakończeniem podróży.

Rozważmy na przykład 2 podróże z rzędu: Podróż APodróż B. Pojazd odebrał klienta w ramach Podróży A. Podczas jazdy do miejsca docelowego kierowca otrzymał prośbę o odbiór kolejnego klienta w ramach Podróży B.

  • Wywołanie getVehicle() zwraca remainingWaypoints, które zawierają:
    A OdbiórB OdbiórB Odbiór.
  • getTrip() lub wywołanie funkcji onTripRemainingWaypointsUpdatedPodróż A zwraca remainingWaypoints, które zawierają:
    Odbiór.
  • getTrip() lub wywołanie onTripRemainingWaypointsUpdatedpodróży B zwraca remainingWaypoints, które zawiera:
    Wyjście z AWejście do BWyjście z B.

Co dalej?