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