Получение данных о поездке непосредственно из Fleet Engine

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

Подробную информацию об использовании Consumer SDK см. в разделе «Поделиться поездками для поездок по требованию» .

Получить информацию о поездке

Чтобы получить информацию о поездке напрямую из Fleet Engine, вызовите метод GetTrip , указав представление JOURNEY_SHARING_V1S . См. ссылку для RPC или REST .

Ваш сервер обычно опрашивает сервис поездок на предмет статуса каждой поездки, в то время как водитель активно следит за движением автомобиля. Обновления местоположения автомобиля обычно происходят каждые 10 секунд, и ваша система должна опрашивать с такой же частотой. Поле Trip.last_location.update_time можно отслеживать, чтобы увидеть, были ли какие-либо обновления с момента предыдущего вызова GetTrip .

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-A";

String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
GetTripRequest getTripRequest =
    GetTripRequest.newBuilder()
        .setName(tripName)
        .setView(JOURNEY_SHARING_V1S)
        .build();
Trip trip = tripService.getTrip(getTripRequest);

Результирующий объект Trip содержит следующие поля, заполненные последней доступной информацией о поездке:

name trip_status remaining_waypoints
vehicle_id trip_type last_location
number_of_passengers pickup_point view (== JOURNEY_SHARING_V1S)
actual_pickup_point intermediate_destinations intermediate_destination_index
pickup_time intermediate_destinations_version dropoff_point
actual_dropoff_point dropoff_time

Получить оставшиеся путевые точки поездки

Объект «Поездка» содержит повторяющееся поле типа TripWaypoint Это поле включает в себя все путевые точки, которые транспортному средству необходимо будет проехать по порядку до конечной точки высадки в этой поездке. При указании представления «Совместное использование путешествий» Fleet Engine сообщает, что обновленную информацию следует помещать в rest_waypoints[0] TripWaypoint . В других представлениях, не связанных с общим доступом к путешествиям, эта путевая точка обычно не отражает последнее положение назначенного транспортного средства. См. ссылку на RPC или REST .

Дополнительную информацию см. в разделе Статус поездки и оставшиеся путевые точки автомобиля в руководстве « Введение в поездки ».

Вот пример поля remaining_waypoints для поездки Trip A:

[0] местоположение.точка = поездка.точка_посадки.точка
trip_id = "поездка_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1-я широта от оставшегося пути до места получения
2-я широта от оставшегося пути до пункта выдачи
...
последняя широта от оставшегося пути до места получения
Pickup_point, если отличается от последнего
данные трафика
distance_meters = расстояние от текущего местоположения транспортного средства по пути_к_точке маршрута до места посадки
эта = обновленное расчетное время прибытия
продолжительность = обновленная продолжительность
[1] location.point = trip.dropoff_point.point
trip_id = "поездка_A"
тип_путевой точки = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] 1-я широта и длина от опорного участка
2-я широта и длина от опорной ноги
...
последняя широта и долгота от опорного этапа
dropoff_point, если отличается от последнего
данные трафика
distance_meters = расстояние от места погрузки вдоль path_to_waypoint до места высадки
эта = обновленное расчетное время прибытия
продолжительность = продолжительность этапа высадки

Для последовательных и совместных поездок этот список может содержать путевые точки из других поездок, которые необходимо пройти перед этой поездкой. Например, рассмотрим сценарий, в котором поездка B назначается тому же транспортному средству, что и поездка A. Поле remaining_waypoints для поездки A будет тогда заполнено следующим образом. Большинство полей опущено для краткости, но они будут заполнены в соответствии с предыдущим примером.

[0] trip_id = "поездка_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
[1] trip_id = "поездка_B"
waypoint_type = PICKUP_WAYPOINT_TYPE
[2] trip_id = "поездка_B"
тип_путевой точки = DROP_OFF_WAYPOINT_TYPE
[3] trip_id = "поездка_A"
тип_путевой точки = DROP_OFF_WAYPOINT_TYPE

Поле remaining_waypoint маршрута B будет заполнено аналогичным образом, но будут присутствовать только первые три записи, поскольку точка высадки рейса A не является частью маршрута маршрута B.