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:
- Konfigurowanie Fleet Engine
 - Tworzenie pojazdu
 - Scenariusze podróży w omówieniu Podróże na żądanie
 
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.
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ę.
| 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:
  | 
  
| 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   | 
  
| 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   | 
  
| 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 podróży bezpośrednio po sobie
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 podróży zawiera listę wszystkich punktów pośrednich, w tym tych z innych podróży, które zostaną odwiedzone przed miejscem docelowym podróży.
Rozważmy na przykład 2 kolejne przejazdy: przejazd A i przejazd 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()zwracaremainingWaypoints, które zawierają:
A Drop-off →B Pickup →B Drop-off. - Wywołanie zwrotne 
getTrip()lubonTripRemainingWaypointsUpdateddla przejazdu A zwracaremainingWaypointszawierające:
miejsce docelowe. - Wywołanie zwrotne 
getTrip()lubonTripRemainingWaypointsUpdateddla przejazdu B zwracaremainingWaypointszawierające:
A Miejsce docelowe → B Miejsce odbioru → i B Miejsce docelowe.