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