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 lebih besar atas pengalaman pengguna akhir, sekaligus tetap memanfaatkan lokasi kendaraan, perkiraan waktu kedatangan (ETA), dan pemilihan rute 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 dari Fleet Engine secara langsung, panggil metode GetTrip, dengan menentukan tampilan JOURNEY_SHARING_V1S. Lihat referensi untuk RPC atau REST.

Server Anda biasanya akan melakukan polling ke 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 pada frekuensi 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

Entity Perjalanan berisi kolom berulang dari jenis TripWaypoint Kolom ini mencakup semua titik jalan yang harus dilalui kendaraan, secara berurutan, sebelum titik penurunan akhir perjalanan ini. Menentukan tampilan Berbagi Perjalanan akan memberi tahu Fleet Engine untuk menempatkan informasi terbaru di remaining_waypoints[0] TripWaypoint. Dalam tampilan lain, selain Berbagi Perjalanan, titik jalan tersebut biasanya tidak mencerminkan posisi terbaru kendaraan yang ditetapkan. 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 penjemputan
LatLng ke-2 dari sisa jalur ke penjemputan
...
LatLng terakhir dari jalur yang tersisa ke penjemputan
pickup_point, jika berbeda dari yang terakhir
traffic_data
distance_meters = jarak dari vehicle_location saat ini di sepanjang path_to_waypoint ke penjemputan
eta = PWT yang diperbarui
duration = updated duration
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] LatLng pertama dari segmen pengantaran
LatLng ke-2 dari segmen pengantaran
...
LatLng terakhir dari perjalanan pengantaran
dropoff_point, jika berbeda dari yang terakhir
traffic_data
distance_meters = jarak dari penjemputan di sepanjang path_to_waypoint ke pengantaran
eta = PWT yang diperbarui
duration = drop-off leg duration

Dengan perjalanan berturut-turut dan penggabungan bersama, daftar ini mungkin berisi titik jalan dari perjalanan lain yang akan dilalui sebelum perjalanan ini. Misalnya, pertimbangkan skenario saat Perjalanan B ditetapkan ke kendaraan yang sama dengan Perjalanan A. Kolom remaining_waypoints untuk Perjalanan A kemudian akan diisi sebagai berikut. Sebagian besar kolom telah dihilangkan agar lebih ringkas, tetapi akan diisi sesuai 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 penurunan Perjalanan A bukan bagian dari rute Perjalanan B.