В этом документе рассказывается, как создать поездку с пересадкой, задать правильные поля и назначить ее транспортному средству. Предполагается, что вы настроили 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 мог рассчитывать время прибытия и отслеживать ее. Это можно сделать при создании поездки или позже, когда вы будете ее редактировать.
После того как вы назначите поездку автомобилю, Fleet Engine автоматически добавит путевые точки, связанные с последовательными поездками, в поле путевых точек автомобиля. Поле remainingWaypoints содержит список всех путевых точек, включая точки из других поездок, которые будут посещены до высадки пассажира.
Например, рассмотрим две поездки подряд: Поездка А и Поездка Б. Водитель забрал пассажира для поездки А и получил запрос на поездку Б.
- При вызове
getVehicle()возвращаетсяremainingWaypointsсо следующими данными:
A Высадка → B Посадка → B Высадка. - Для поездки А либо
getTrip(), либо обратный вызовonTripRemainingWaypointsUpdatedвозвращаетremainingWaypoints, содержащий:
остановку. - Функция
getTrip()или обратный вызовonTripRemainingWaypointsUpdatedдля поездки Б возвращаетremainingWaypoints, содержащий:
Высадка в пункте А → Посадка в пункте Б → Высадка в пункте Б.