Truy xuất dữ liệu chuyến đi trực tiếp từ Fleet Engine

Hướng dẫn này cho bạn biết cách truy xuất dữ liệu chuyến đi trực tiếp từ Fleet Engine, thay vì sử dụng Consumer SDK. Bạn có thể sử dụng phương pháp này để kiểm soát chặt chẽ hơn trải nghiệm của người dùng cuối trong khi vẫn tận dụng được vị trí chính xác và theo thời gian thực của xe, thời gian dự kiến đến và thông tin định tuyến của Fleet Engine.

Để biết thông tin chi tiết về cách sử dụng Consumer SDK, hãy xem phần Chia sẻ hành trình cho các chuyến đi theo yêu cầu.

Truy xuất thông tin chuyến đi

Để truy xuất thông tin chuyến đi trực tiếp từ Fleet Engine, hãy gọi phương thức GetTrip, chỉ định chế độ xem JOURNEY_SHARING_V1S. Xem tài liệu tham khảo về RPC hoặc REST.

Máy chủ của bạn thường sẽ thăm dò dịch vụ chuyến đi để biết trạng thái của từng chuyến đi trong khi người lái xe đang tích cực theo dõi tiến trình của xe. Thông thường, thông tin cập nhật về vị trí của xe sẽ diễn ra mỗi 10 giây và hệ thống của bạn phải thăm dò ở cùng tốc độ đó. Bạn có thể theo dõi trường Trip.last_location.update_time để xem có nội dung cập nhật nào kể từ lệnh gọi trước đó đến GetTrip hay không.

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);

Đối tượng Trip thu được sẽ có các trường sau được điền sẵn thông tin mới nhất hiện có về chuyến đi:

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

Truy xuất các điểm tham chiếu còn lại của chuyến đi

Thực thể Chuyến đi chứa một trường lặp lại thuộc loại TripWaypoint Trường này bao gồm tất cả các điểm tham chiếu mà xe cần đi qua theo thứ tự trước điểm trả khách cuối cùng của chuyến đi này. Việc chỉ định chế độ xem Chia sẻ hành trình sẽ cho Fleet Engine biết cách đặt thông tin cập nhật vào remaining_waypoints[0] TripWaypoint. Trong các chế độ xem khác không phải chế độ xem Chia sẻ hành trình, điểm đánh dấu đó thường không phản ánh vị trí mới nhất của chiếc xe được chỉ định. Hãy xem tài liệu tham khảo về RPC hoặc REST.

Để biết thêm thông tin, hãy xem phần Trạng thái chuyến đi và các điểm tham chiếu còn lại của xe trong hướng dẫn Giới thiệu về chuyến đi.

Sau đây là ví dụ về trường remaining_waypoints cho một chuyến đi, Chuyến đi A:

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] LatLng thứ nhất từ đường dẫn còn lại đến điểm lấy hàng
LatLng thứ 2 từ đường dẫn còn lại đến vị trí lấy hàng
...
LatLng cuối cùng từ đường dẫn còn lại đến điểm lấy hàng
pickup_point, nếu khác với lần trước
traffic_data
distance_meters = khoảng cách từ vehicle_location hiện tại dọc theo path_to_waypoint đến điểm đón
eta = updated ETA
thời lượng = thời lượng đã cập nhật
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] LatLng thứ nhất từ đoạn đường thả khách
LatLng thứ 2 từ chặng thả khách
...
LatLng gần đây nhất từ chặng thả khách
dropoff_point (nếu khác với điểm cuối cùng)
traffic_data
distance_meters = khoảng cách từ điểm đón dọc theo đường path_to_waypoint đến điểm trả khách
eta = updated ETA
duration = drop-off leg duration

Với các chuyến đi ghép xe liên tiếp và dùng chung, danh sách này có thể chứa các điểm tham chiếu của những chuyến đi khác cần đi qua trước chuyến đi này. Ví dụ: hãy xem xét trường hợp Chuyến đi B được chỉ định cho cùng một xe với Chuyến đi A. Sau đó, trường remaining_waypoints cho Chuyến đi A sẽ được điền sẵn như sau. Hầu hết các trường đã bị bỏ qua để cho ngắn gọn, nhưng chúng sẽ được điền nhất quán với ví dụ trước.

[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

Trường remaining_waypoint của Chuyến đi B sẽ được điền tương tự, nhưng chỉ có 3 mục đầu tiên vì điểm trả khách của Chuyến đi A không nằm trong tuyến đường của Chuyến đi B.