本指南将介绍如何直接从 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 将更新后的信息放入 remaining_waypoints[0] TripWaypoint
中。在其他非“行程分享”视图中,该途经点通常不会反映所分配车辆的最新位置。请参阅 RPC 或 REST 的参考文档。
如需了解详情,请参阅行程简介指南中的行程状态和剩余的车辆途经点。
以下是旅程 A 的 remaining_waypoints
字段示例:
| |||||||||||||||||||||
|
对于连续拼车行程和共享拼车行程,此列表可能包含在本次行程之前要经过的其他行程的途经点。例如,假设行程 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 的路线中。