API Ringkasan Rute

Route Overview API adalah produk Solusi Fleet Kilometer Terakhir yang dibuat berdasarkan DriverSDK. Dengan ini, Anda dapat mengambil informasi rute untuk kendaraan tertentu, sebagai pengambilan satu kali atau secara berkelanjutan dengan menggunakan pemroses untuk update. Tujuan Route Overview API mendukung jenis informasi berikut:

  • Rencana rute lengkap, termasuk lokasi perhentian kendaraan, waktu perjalanan, jarak
  • Jalur polyline rute di antara setiap perhentian.

Dokumen ini menjelaskan langkah-langkah integrasi dengan API untuk aplikasi Anda.

Prasyarat

  • Anda harus menjalankan aplikasi Android menggunakan alfa DriverSDK v4.1.0 atau yang lebih tinggi. Saluran alfa tersedia dengan menggunakan transportation-driver-alpha untuk artifactId Maven.
  • API menggunakan informasi rute yang disediakan oleh Fleet Engine melalui Deliveries API. Ini dapat diberikan melalui API di DriverSDK (DeliveryDriverApi) atau langsung ke Fleet Engine.

Langkah-langkah integrasi

Bagian ini membahas langkah-langkah dasar yang diperlukan untuk mengintegrasikan aplikasi driver Android dengan API. Petunjuk ini memiliki asumsi berikut:

  • Anda memiliki aplikasi Android yang sudah terintegrasi dengan SDK Driver
  • Anda telah melakukan inisialisasi DeliveryDriverApi di aplikasi dengan konteks Anda dapat menemukan

Lihat Mulai Menggunakan Driver SDK for Android untuk mengetahui detailnya.

Langkah 0 - Penyiapan rute

Anda dapat melewati langkah ini jika sudah menyiapkan Fleet Engine dan dapat membuat tugas perhentian kendaraan dan pengiriman.

Untuk memuat info perhentian dan tugas ke Fleet Engine, Anda memerlukan kendaraan pengiriman ditetapkan ke rute yang valid. Hal ini karena Route Overview API memerlukan rute yang berbeda untuk mengambil data. Rute yang valid terdiri dari serangkaian titik jalan dan perhentian, dan perhentian hanya bisa ada jika memiliki setidaknya satu tugas Anda. Lihat Panduan integrasi Fleet Engine API untuk informasi selengkapnya.

Langkah 1 - Melakukan inisialisasi API

Setelah menetapkan rute yang valid dengan perhentian dan tugas terkait, Anda dapat melakukan inisialisasi Route Overview API. Inisialisasi memberikan kerangka kerja yang diperlukan untuk koneksi antara Fleet Engine dan API. Rute Overview API harus diinisialisasi dengan objek konteks yang sama seperti yang Anda gunakan melakukan inisialisasi DeliveryDriverApi di DriverSDK, karena objek mengacu pada ID kendaraan yang sama yang ditentukan sebelumnya dalam objek DriverContext Anda. Hal berikut contoh menggambarkan cara membuat instance RouteOverviewApi.


RouteOverviewApi api = RouteOverviewApi.getInstance();
if (api == null) {
    api = RouteOverviewApi.createInstance(context);
}

Langkah 2 - Daftarkan kendaraan untuk peristiwa perubahan rute

Setelah menginisialisasi API, Anda dapat menggunakan VehicleRouteOverview untuk berinteraksi dengan kemampuan ringkasan rute. Hal ini memungkinkan untuk menggunakan informasi rute yang Anda berikan selama penyiapan rute. Gunakan pemroses peristiwa API untuk memfasilitasi pembaruan peristiwa dan pengambilan rute.

Peristiwa perubahan rute terjadi setiap kali jalur ke salah satu perhentian yang ditetapkan kendaraan diperbarui, perhentian diatur ulang, atau ketika Fleet Engine memperbarui informasi PWT.


vehicleRouteOverview.addOnRouteChangedEventListener(event -> {
    // handle route update events
});

Langkah 3 - Mengaktifkan API

Sekarang setelah Anda siap untuk menggunakan informasi rute, Anda harus mengaktifkan API untuk memungkinkannya merespons peristiwa kendaraan. Ingat bahwa API diinisialisasi dalam dinonaktifkan untuk menghindari penggunaan bandwidth jaringan yang tidak perlu.

vehicleRouteOverview.setRouteOverviewEnabled(true);

Anda dapat menjeda pembaruan ini kapan saja dengan memanggil metode yang sama dengan senilai false.

Langkah 4 - Gambar rute di Google Maps

Setelah mendapatkan daftar RouteToVehicleStop, Anda dapat menggunakannya di aplikasi. Misalnya, Anda dapat menggambar jalur polyline rute di Google Maps di instance Compute Engine. Cuplikan kode berikut menunjukkan contoh yang menggambar rute polyline pada tampilan peta dan menambahkan penanda di atas setiap lokasi perhentian.

    GoogleMap googleMap = … // Instance of the Map view you are using
    ImmutableList<RouteToVehicleStop> route = event.newRoute();

    PolylineOptions routePolyline = new PolylineOptions().color(Color.BLUE);
    for (RouteToVehicleStop stop : route) {
        routePolyline.addAll(stop.path());

        MarkerOptions marker =
            new MarkerOptions().position(stop.vehicleStop().getWaypoint().getPosition());
        googleMap.addMarker(marker);
    }

    googleMap.addPolyline(routePolyline);
}

Screenshot yang menampilkan gambar ringkasan rute

Tindakan ini akan menghasilkan tampilan yang mirip dengan screenshot di sebelah kanan:

Langkah 5 - Dapatkan ringkasan rute

Jika Anda ingin aplikasi melakukan panggilan satu kali untuk mengambil snapshot informasi rute saat ini, Anda dapat menggunakan metode berikut untuk mengambil data:

ListenableFuture<ImmutableList<RouteToVehicleStop> future = vehicleRouteOverview.getRouteToVehicleStops();
ImmutableList<RouteToVehicleStop> stops = future.get();

Anda bisa melakukan ini daripada berlangganan update rute melalui pemroses peristiwa.

Langkah 6 - Membersihkan

Jika aplikasi Anda tidak lagi memerlukan fungsi ringkasan rute, Anda harus memastikan yang telah Anda bersihkan. Melakukan pembersihan akan menghindari memori, pemrosesan, dan konsumsi jaringan dalam aplikasi Anda.

Menghapus pemroses peristiwa tertentu

Anda harus menghapus pemroses peristiwa jika pemroses tertentu tidak lagi diperlukan.

vehicleRouteOverview.removeOnRouteChangedEventListener(listener);

Menghapus semua pemroses peristiwa

Sebagai bagian dari rutinitas pembersihan, Anda dapat menghapus semua pemroses peristiwa yang terdaftar sekaligus.

vehicleRouteOverview.clearEventListeners();

Menghapus instance Route Overview API

Setiap kali Ringkasan Rute tidak lagi diperlukan atau ID kendaraan yang dilacak telah berubah, Anda dapat memanggil API ini untuk menghapus referensi internal.

vehicleRouteOverview.clearInstance();