В этом руководстве показано, как получать данные о поездках непосредственно из 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:
| |||||||||||||||||||||
| |||||||||||||||||||||
При выполнении последовательных и совместных поездок этот список может содержать путевые точки из других поездок, которые необходимо преодолеть до данной. Например, рассмотрим сценарий, когда поездка 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.