Создайте поездку в один пункт назначения

В этом документе описывается, как создать поездку с одним пунктом назначения, задать правильные поля и назначить ее транспортному средству для выполнения. Предполагается, что вы настроили Fleet Engine и создали транспортные средства, имеете работающее приложение водителя и, по желанию, потребительское приложение. Для этого см. следующие связанные руководства:

Основы создания поездки

В этом разделе описываются детали запроса, необходимые для создания поездки в Fleet Engine. Вы отправляете запрос на создание, используя gRPC и REST.

  • Метод CreateTrip() : gRPC или REST
  • Сообщение CreateTripRequest : только gRPC

Поля для поездок

Используйте следующие поля для создания поездки в Fleet Engine. Вы можете использовать различные поля для разных типов поездок: одно- или многоадресные, обратные или совместные поездки. Вы можете указать необязательные поля при создании поездки или задать их позже при обновлении поездки.

Поля поездок
Имя Необходимый? Описание
родитель Да Строка, включающая идентификатор проекта. Этот идентификатор должен быть тем же идентификатором, который используется во всей интеграции Fleet Engine, с теми же ролями учетной записи службы.
trip_id Да Строка, которую вы создаете, которая однозначно идентифицирует эту поездку. Идентификаторы поездок имеют определенные ограничения, как указано в ссылке.
тип_поездки Да Установите для параметра TripType следующие значения для создаваемого типа поездки:
  • Один пункт назначения : установите значение SHARED или EXCLUSIVE .
  • Несколько пунктов назначения : установите значение EXCLUSIVE .
  • Спина к спине : установите значение EXCLUSIVE .
  • Общий пул : установите значение SHARED .
pickup_point Да Начальная точка поездки.
Промежуточные пункты назначения Да

Только для поездок с несколькими пунктами назначения : список промежуточных пунктов назначения, которые водитель посещает между пунктом посадки и пунктом высадки. Как и в случае с dropoff_point , это поле можно задать позже, вызвав UpdateTrip , но поездка с несколькими пунктами назначения по определению содержит промежуточные пункты назначения.

vehicle_waypoints Да

Только поездки с общим пулом : это поле поддерживает чередование точек маршрута из нескольких поездок. Оно содержит все оставшиеся точки маршрута для назначенного транспортного средства, а также точки посадки и высадки для этой поездки. Вы можете задать это поле, вызвав CreateTrip или UpdateTrip . Вы также можете обновить точки маршрута транспортного средства через поле waypoints , вызвав UpdateVehicle . Служба не возвращает эту информацию при вызовах GetTrip из соображений конфиденциальности.

количество_пассажиров Нет Количество пассажиров в поездке.
точка_высадки Нет Цель поездки.
идентификатор_транспортного_средства Нет Идентификатор транспортного средства, назначенного для поездки.

Пример: поездка в один пункт назначения

Следующий пример демонстрирует, как создать поездку в торговый центр Grand Indonesia East Mall. Поездка включает двух пассажиров, является эксклюзивной и имеет статус NEW . provider_id поездки должен совпадать с идентификатором проекта Google Cloud. В примерах показан проект Google Cloud с идентификатором проекта my-rideshare-co-gcp-project . Этот проект также должен включать учетную запись службы для вызова Fleet Engine. Подробности см. в разделе Роли учетных записей служб .

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;
}

Что дальше?