直接从舰队引擎检索行程数据

Consumer SDK 为拼车消费类应用提供了一项开箱即用功能,能够显示载着他们出发的车辆的位置和进度。

但是,一些拼车提供商希望通过灵活集成来更好地控制其最终用户的客户体验,同时仍然利用 Google 的准确实时车辆位置、预计到达时间和路线。本指南介绍了如何直接从 Fleet Engine 检索行程数据,作为使用 Consumer SDK 的替代方案。

概览

如需直接从 Fleet Engine 检索行程信息,请调用 GetTrip 方法,并指定 JOURNEY_SHARING_V1S 视图 (RPC | REST)。

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 (RPC | REST) 对象将以下字段填充行程的最新可用信息:

  • name
  • vehicle_id
  • trip_status
  • trip_type
  • number_of_passengers
  • pickup_point
  • actual_pickup_point
  • pickup_time
  • intermediate_destinations
  • intermediate_destinations_version
  • intermediate_destination_index
  • dropoff_point
  • actual_dropoff_point
  • dropoff_time
  • remaining_waypoints
  • last_location
  • view (== JOURNEY_SHARING_V1S)

当乘客主动监控车辆进度时,拼车提供商通常会每 2 到 5 秒轮询一次行程服务,以了解每次行程的状态。车辆位置信息更新的间隔时间通常更长,例如 10 秒。可以监控 Trip.last_location.update_time 字段,以查看自上次调用 GetTrip 以来是否有任何更新。

行程航点

Trip 实体包含 TripWaypoint 类型的重复字段 (RPC | REST)。此字段包含车辆在此行程的最终下车点之前需要按顺序行驶的所有航点。指定“行程分享”视图会指示 Fleet Engine 将更新后的信息放入 re 累计的 re 残路径点 [0] TripWaypoint。在其他非行程共享视图中,该航点通常并不能反映所分配车辆的最新位置。

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

[0] location.point = travel.pickup_point.point
trip_id = "trip_A"
Waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_path = LatLng[] 从剩余路径到上车点的第 1 个 LatLng
从剩余路径到上车点的第 2 个 LatLng
...
从剩余路径前往上车点的最后一个 LatLng
pickup_point(如果与 last 不同)
traffic_data
Distance_meters = 从当前 vehicle_location 沿 path_to_POI 到上车点的距离
预计到达时间 = 已更新预计到达时间
时长 = 更新后的时长
[1] location.point = travel.dropoff_point.point
trip_id = "trip_A"
Waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_path = LatLng[] 下车点的第 1 个 LatLng
距离下车点的第 2 个 LatLng
...
距离下车点的最后一个 LatLng
dropoff_point(如果与上一个不同)
traffic_data
Distance_meters = 从上车点到下车点的距离
预计到达时间 = 已更新预计到达时间
时长 = 下车点时长

对于背靠背和共享(拼车)行程,此列表可能包含将在此行程期间遍历的其他行程的航点。例如,假设行程 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 的路线。