直接从 Fleet Engine 检索行程数据

本指南介绍如何直接从 Fleet Engine 检索行程数据, 使用消费者 SDK 的备选方案。您可以通过此方法 控制最终用户体验,同时仍然利用舰队 引擎提供准确、实时的车辆位置、预计到达时间和路线。

如需详细了解如何使用消费者 SDK,请参阅分享按需使用历程 行程

检索行程信息

如需直接从 Fleet Engine 检索行程信息,请调用 GetTrip 方法,指定 JOURNEY_SHARING_V1S 视图。请参阅 RPCREST

您的服务器通常会轮询行程服务以获取每个行程的状态 。车辆位置 通常每 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 用于在剩余路径点 [0] 中添加更新信息 TripWaypoint。在其他非行程共享视图中,该航点不会 通常反映所分配车辆的最新位置。请参阅 RPCREST 的参考文档。

如需了解详情,请参阅行程状态和剩余车辆航点 行程简介指南。

以下是行程 A 的 remaining_waypoints 字段示例:

[0] location.point = trip.pickup_point.point
trip_id =“trip_A”
waypoint_type = PICKUP_WAYPOINT_TYPE
路径点 = LatLng[] 从剩余路径到上车点的第 1 个 LatLng
从剩余路径到上车点的第二个 LatLng
从剩余路径到上车点的最后一个 LatLng
pickup_point [提货点](如果与 last [提货点] 不同)
traffic_data
距离 = 从当前车辆位置沿着 path_to_waypoint 到上车点的距离
预计到达时间 = 更新的预计到达时间
时长 = 更新后的时长
[1] location.point = trip.dropoff_point.point
trip_id =“trip_A”
Waypoint_type = DROP_OFF_WAYPOINT_TYPE
路径点 = LatLng[] 下车点第 1 个 LatLng
下车点第 2 个 LatLng
从下车点出发的上一个 LatLng
dropoff_point(如果与上一个不同)
traffic_data
距离 = 从上车点沿 path_to_waypoint 到下车点的距离
预计到达时间 = 更新的预计到达时间
时长 = 下车点的路程时长

对于连续和共享的池化行程,此列表可能包含航点 在此行程之前要遍历的其他行程。例如,假设 行程 B 与行程 A 分配给同一辆车的场景。通过 然后,系统会按如下方式填充行程 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

系统将以类似方式填充行程 B 的 remaining_waypoint 字段, 因为行程 A 的下车点不在此列,所以前三个条目将会存在 行程 B 的路线中。