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