Получение данных о поездке непосредственно из 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 о необходимости поместить обновленную информацию в поле remaining_waypoints[0] TripWaypoint . В других представлениях, не относящихся к Journey Sharing, эта путевая точка обычно не отражает последнее местоположение назначенного транспортного средства. См. справочник по RPC или REST .

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

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

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

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

[0] trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
[1] trip_id = "trip_B"
waypoint_type = PICKUP_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.