Mengambil data perjalanan langsung dari Fleet Engine

Panduan ini menunjukkan cara mengambil data perjalanan langsung dari Fleet Engine, sebagai alternatif untuk menggunakan Consumer SDK. Anda dapat menggunakan pendekatan ini untuk mendapatkan kontrol yang lebih besar atas pengalaman pengguna akhir sekaligus memanfaatkan lokasi kendaraan, perkiraan waktu tiba, dan perutean yang akurat dan real-time dari Fleet Engine.

Untuk mengetahui detail tentang penggunaan Consumer SDK, lihat Membagikan perjalanan untuk perjalanan on-demand.

Mengambil informasi perjalanan

Untuk mengambil informasi perjalanan langsung dari Fleet Engine, panggil metode GetTrip dengan menentukan tampilan JOURNEY_SHARING_V1S. Lihat referensi untuk RPC atau REST.

Server Anda biasanya akan melakukan polling pada layanan perjalanan untuk mengetahui status setiap perjalanan saat penumpang secara aktif memantau progres kendaraan. Pembaruan lokasi kendaraan biasanya terjadi setiap 10 detik dan sistem Anda harus melakukan polling dengan kecepatan yang sama. Kolom Trip.last_location.update_time dapat dipantau untuk melihat apakah ada update sejak panggilan sebelumnya ke 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);

Objek Trip yang dihasilkan memiliki kolom berikut yang diisi dengan informasi terbaru yang tersedia untuk perjalanan:

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

Mengambil titik jalan perjalanan yang tersisa

Entitas Perjalanan berisi kolom berulang berjenis TripWaypoint Kolom ini mencakup semua titik jalan yang harus dilalui kendaraan, secara berurutan, sebelum titik pengantaran akhir perjalanan ini. Menentukan tampilan Berbagi Perjalanan akan memberi tahu Fleet Engine untuk menempatkan informasi yang diperbarui di remaining_waypoints[0] TripWaypoint. Di tampilan lain yang bukan Berbagi Perjalanan, titik jalan tersebut biasanya tidak mencerminkan posisi terbaru kendaraan yang ditugaskan. Lihat referensi untuk RPC atau REST.

Untuk mengetahui informasi selengkapnya, lihat Status perjalanan dan titik jalan kendaraan yang tersisa dalam panduan Pengantar perjalanan.

Berikut contoh kolom remaining_waypoints untuk perjalanan, Perjalanan A:

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] LatLng pertama dari jalur yang tersisa ke lokasi pengambilan
LatLng ke-2 dari jalur yang tersisa ke lokasi pengambilan
...
LatLng terakhir dari jalur yang tersisa ke lokasi pengambilan
pickup_point, jika berbeda dari yang terakhir
traffic_data
distance_meters = jarak dari current vehicle_location di sepanjang path_to_waypoint ke pickup
eta = updated ETA
durasi = durasi yang diperbarui
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] LatLng ke-1 dari segmen pengantaran
LatLng ke-2 dari segmen pengantaran
...
LatLng terakhir dari bagian akhir rute
dropoff_point, jika berbeda dari yang terakhir
traffic_data
distance_meters = jarak dari lokasi penjemputan di sepanjang path_to_waypoint ke lokasi penurunan
eta = updated ETA
duration = durasi perjalanan ke lokasi pengantaran

Dengan perjalanan gabungan dan berurutan, daftar ini dapat berisi titik jalan dari perjalanan lain yang harus dilalui sebelum perjalanan ini. Misalnya, pertimbangkan skenario saat Perjalanan B ditetapkan ke kendaraan yang sama dengan Perjalanan A. Kolom remaining_waypoints untuk Perjalanan A akan diisi sebagai berikut. Sebagian besar kolom telah dihilangkan agar lebih ringkas, tetapi kolom tersebut akan diisi secara konsisten dengan contoh sebelumnya.

[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

Kolom remaining_waypoint Perjalanan B akan diisi dengan cara yang sama, tetapi hanya tiga entri pertama yang akan ada, karena titik penghentian Perjalanan A bukan bagian dari rute Perjalanan B.