Получение данных о поездке непосредственно из 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

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

Сущность Trip содержит повторяющееся поле типа TripWaypoint Это поле содержит все путевые точки, которые транспортному средству необходимо будет пройти по порядку до конечной точки назначения. Указание представления Journey Sharing указывает Fleet Engine на необходимость обновления информации в remain_waypoints[0] TripWaypoint . В других представлениях, не связанных с Journey Sharing, эта путевая точка обычно не отражает последнее местоположение назначенного транспортного средства. См. справку по RPC или REST .

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

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

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

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

[0] trip_id = "trip_A"
waypoint_type = ТИП_ТОЧКИ_ПОДБОРА
[1] trip_id = "trip_B"
waypoint_type = ТИП_ТОЧКИ_ПОДБОРА
[2] trip_id = "trip_B"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
[3] trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE

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