В этом руководстве показано, как получать данные о поездках непосредственно из 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. В этом поле перечислены все путевые точки, через которые должно проехать транспортное средство, прежде чем достигнет конечной точки высадки. Указание представления "Передача данных о поездке" сообщает Fleet Engine о необходимости поместить обновленную информацию в remaining_waypoints[0]
TripWaypoint. В других представлениях, не связанных с совместным использованием поездок, эта путевая точка обычно не отражает последнее положение назначенного транспортного средства. Ознакомьтесь со справочной информацией по RPC или REST.
Подробную информацию вы найдете в разделе Статус поездки и оставшиеся путевые точки руководства Общие сведения о поездках.
Вот пример поля remaining_waypoints для поездки A:
| |||||||||||||||||||||
| |||||||||||||||||||||
При последовательных и совместных поездках этот список может содержать путевые точки из других поездок, которые нужно пройти до этой поездки. Например, рассмотрим сценарий, в котором поездка B назначается тому же транспортному средству, что и поездка A. Поле remaining_waypoints для поездки А будет заполнено следующим образом:
Большинство полей опущены для краткости, но они будут заполнены в соответствии с предыдущим примером.
| [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 поездки Б будет заполнено аналогично, но в нем будут только первые три записи, поскольку пункт назначения поездки А не входит в маршрут поездки Б.