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

Z tego dokumentu dowiesz się, jak utworzyć przejazd do jednego miejsca docelowego, ustawić odpowiednie pola i przypisać go do pojazdu, który ma go zrealizować. Zakładamy, że masz skonfigurowany silnik floty i że masz utworzone pojazdy, działającą aplikację dla kierowcy oraz opcjonalnie aplikację dla klienta. W tym celu zapoznaj się z tymi przewodnikami:

Podstawy tworzenia 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 parametr 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. Możesz ustawić to pole, 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: podróż do jednego miejsca docelowego

W tym przykładzie pokazujemy, jak utworzyć podróż do Grand Indonesia East Mall. Podróż obejmuje 2 pasażerów, jest na wyłączność i ma stanNEW. provider_id podróży musi być taki sam jak identyfikator projektu Google Cloud. Przykłady pokazują projekt Google Cloud z identyfikatorem my-rideshare-co-gcp-project. Aby wywołać Fleet Engine, projekt musi też zawierać konto usługi. Więcej informacji znajdziesz w artykule Role na koncie 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?