Tworzenie podróży w jedną stronę docelową

Z tego dokumentu dowiesz się, jak utworzyć przejazd z jednym miejscem docelowym, ustawić odpowiednie pola i przypisać go do pojazdu, który ma go zrealizować. Zakładamy, że masz skonfigurowany Fleet Engine i utworzone pojazdy oraz działającą aplikację dla kierowców i opcjonalnie aplikację użytkownika. Zapoznaj się z tymi powiązanymi przewodnikami:

Podstawowe informacje o tworzeniu podróży

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

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

Pola podróży

Aby utworzyć przejazd w Fleet Engine, użyj tych pól. Możesz używać różnych pól dla różnych rodzajów przejazdów: z jednym lub wieloma miejscami docelowymi, przejazdów łączonych lub przejazdów współdzielonych. Pola opcjonalne możesz wypełnić podczas tworzenia przejazdu lub później, gdy będziesz go aktualizować.

Pola dotyczące podróży
Nazwa Wymagany? Opis
parent Tak Ciąg tekstowy zawierający identyfikator projektu. Ten identyfikator musi być taki sam jak identyfikator używany w całej integracji Fleet Engine i mieć te same role konta usługi.
trip_id Tak Utworzony przez Ciebie ciąg znaków, który jednoznacznie identyfikuje tę podróż. Identyfikatory podróży podlegają pewnym ograniczeniom, które są opisane w dokumentacji.
trip_type Tak Ustaw TripType na te wartości dla typu podróży, który tworzysz:
  • Pojedyncze miejsce docelowe: ustaw wartość SHARED lub EXCLUSIVE.
  • Multi-destination (Wiele miejsc docelowych): ustaw na EXCLUSIVE.
  • Back-to-back (Jedna po drugiej): ustaw wartość EXCLUSIVE.
  • Wspólne miejsce na dane: ustawiono na SHARED.
pickup_point Tak Punkt początkowy podróży.
Miejsca docelowe pośrednie Tak

Tylko przejazdy z wieloma miejscami docelowymi: lista miejsc docelowych, które kierowca odwiedza między odbiorem a wysadzeniem pasażera. 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 pośrednie przypisanego pojazdu, a także punkty pośrednie odbioru i wysiadania dla tego przejazdu. Możesz ustawić to pole, wywołując CreateTrip lub UpdateTrip. Możesz też zaktualizować punkty pośrednie pojazdu w polu waypoints, wywołując metodę 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 podczas podróży.
dropoff_point Nie Miejsce docelowe podróży.
vehicle_id Nie Identyfikator pojazdu przypisanego do przejazdu.

Przykład: podróż do jednego miejsca docelowego

Poniższy przykład pokazuje, jak utworzyć podróż do centrum handlowego Grand Indonesia East Mall. Podróż obejmuje 2 pasażerów, jest na wyłączność, a jej stan to NEW. provider_id podróży musi być taki sam jak identyfikator projektu Google Cloud. Przykłady pokazują projekt Google Cloud o identyfikatorze my-rideshare-co-gcp-project. Ten projekt musi też zawierać konto usługi, aby można było wywołać Fleet Engine. Więcej informacji znajdziesz w sekcji Role konta usługi.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

// Trip initial settings.
String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE) // Use TripType.SHARED for carpooling.
    .setPickupPoint(                 // Grand Indonesia East Mall.
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setNumberOfPassengers(2)
    // Provide the drop-off point if available.
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId("trip-8241890")  // Trip ID assigned by the provider.
    .setTrip(trip)              // The initial state is NEW.
    .build();

// Error handling.
try {
  Trip createdTrip = tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

Co dalej?