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