В этом руководстве рассказывается, как получать данные о поездках непосредственно из Fleet Engine, а не с помощью Consumer SDK. Этот подход позволяет лучше контролировать работу конечных пользователей, но при этом пользоваться точными данными о местоположении транспортных средств, расчетным временем прибытия и маршрутами в реальном времени от Fleet Engine.
Подробнее о том, как делиться маршрутами для поездок по запросу…
Как получить информацию о поездке
Чтобы получить информацию о поездке непосредственно из 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. В других представлениях, не связанных с совместным использованием маршрута, эта путевая точка обычно не отражает последнее местоположение назначенного автомобиля. Ознакомьтесь со справочной информацией о RPC или REST.
Подробнее о статусе рейса и оставшихся путевых точках рассказывается в руководстве по рейсам.
Пример поля remaining_waypoints для рейса 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 для поездки Б будет заполнено аналогичным образом, но в нем будет только три записи, поскольку пункт высадки из поездки А не входит в маршрут поездки Б.