В этом документе описывается, как создать обратный рейс, заполнить необходимые поля и назначить его транспортному средству для выполнения. Предполагается, что вы настроили Fleet Engine, создали транспортные средства, имеете работающее приложение для водителя и, при необходимости, приложение для клиента. Вам также необходимо ознакомиться с различными сценариями поездок по запросу. Подробнее см. в следующих руководствах:
- Настройка Fleet Engine
- Создать автомобиль
- Сценарии поездок в обзоре поездок по запросу
Основы создания поездок
В этом разделе описываются данные запроса, необходимые для создания рейса в Fleet Engine. Запрос на создание отправляется с использованием gRPC и REST.
Поля поездок
Используйте следующие поля для создания рейса в Fleet Engine. Вы можете использовать разные поля для разных типов рейсов: одно- или многоцелевых, обратных или совместных. Необязательные поля можно указать при создании рейса или настроить позже, при его обновлении.
Имя | Необходимый? | Описание |
---|---|---|
родитель | Да | Строка, включающая идентификатор проекта. Этот идентификатор должен совпадать с идентификатором, используемым во всей вашей интеграции Fleet Engine, с теми же ролями учётной записи службы. |
trip_id | Да | Строка, которую вы создаёте, чтобы уникально идентифицировать эту поездку. Идентификаторы поездок имеют определённые ограничения, как указано в справочнике. |
тип_поездки | Да | Задайте для параметра TripType следующие значения для создаваемого типа поездки:
|
пункт_выдачи | Да | Место отправления поездки. |
Промежуточные пункты назначения | Да | Только для поездок с несколькими пунктами назначения : список промежуточных пунктов назначения, которые водитель посещает между пунктом посадки и пунктом высадки. Как и в случае с |
точки_пути_транспортного_средства | Да | Только для поездок с общим пулом : это поле поддерживает чередование путевых точек из нескольких поездок. Оно содержит все оставшиеся путевые точки для назначенного транспортного средства, а также путевые точки посадки и высадки для этой поездки. Вы можете настроить это поле, вызвав |
количество_пассажиров | Нет | Количество пассажиров в поездке. |
точка_высадки | Нет | Цель поездки. |
идентификатор_транспортного_средства | Нет | Идентификатор транспортного средства, назначенного для поездки. |
Пример: создать обратную поездку
Ниже показано, как создать обратный рейс и назначить его транспортному средству. В этом случае создание рейса происходит так же, как и для поездки с одним пунктом назначения. Только позже вы создаёте ещё один рейс и назначаете его транспортному средству с уже активным рейсом.
// 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;
}
Обновить данные о поездках подряд
Назначая транспортное средство для поездки в обратном направлении, вы назначаете поездку транспортному средству, даже если поездка ему уже была назначена.
Любая поездка, созданная в Fleet Engine, должна быть назначена транспортному средству, чтобы Fleet Engine мог рассчитать ожидаемое время прибытия и отслеживать её. Это можно сделать как при создании поездки, так и позже, при её обновлении.
После назначения поездки транспортному средству Fleet Engine автоматически добавляет путевые точки, связанные с обратными поездками, в поле «Путевые точки» транспортного средства. Поле « remainingWaypoints
путевые точки» для поездки содержит список всех путевых точек, включая точки из других поездок, которые будут посещены до окончания поездки.
Например, рассмотрим две поездки подряд: поездка A и поездка B. Транспортное средство забрало пассажира для поездки A , и по пути к месту высадки водитель получает запрос на подбор другого пассажира для следующей поездки, поездки B.
- Вызов
getVehicle()
возвращаетremainingWaypoints
, которые содержат:
A Место высадки → B Место высадки → B Место высадки . - Либо
getTrip()
, либо обратный вызовonTripRemainingWaypointsUpdated
для Trip A возвращаетremainingWaypoints
, которые содержат:
Высадка . - Либо
getTrip()
, либо обратный вызовonTripRemainingWaypointsUpdated
для Trip B возвращаетremainingWaypoints
, которые содержат:
A Место высадки → B Место забора → и B Место высадки .