API Ringkasan Rute

Route Overview API adalah produk Fleet Mil Terakhir yang dibuat di DriverSDK. Dengan solusi ini, Anda dapat mengambil informasi rute untuk kendaraan tertentu, baik sebagai pengambilan satu kali maupun secara terus-menerus menggunakan pemroses untuk pembaruan. Route Overview API mendukung jenis informasi berikut:

  • Rencana rute lengkap, termasuk lokasi perhentian kendaraan, waktu perjalanan, dan 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 saluran alfa DriverSDK v4.1.0 atau yang lebih baru. Saluran alfa tersedia dengan menggunakan transportation-driver-alpha untuk artifactId Maven.
  • API menggunakan informasi rute yang diberikan oleh Fleet Engine melalui Deliveries API. ID 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 sudah memiliki aplikasi Android yang telah terintegrasi dengan Driver SDK
  • Anda telah melakukan inisialisasi DeliveryDriverApi di aplikasi dengan objek konteks yang dapat ditemukan

Lihat Mulai Menggunakan Driver SDK untuk Android untuk mengetahui detailnya.

Langkah 0 - Penyiapan rute

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

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

Langkah 1 - Melakukan inisialisasi API

Setelah menetapkan rute yang valid dengan perhentian dan tugas terkait, Anda dapat menginisialisasi Route Overview API. Inisialisasi menyediakan framework yang diperlukan untuk koneksi antara Fleet Engine dan API. Route Overview API harus diinisialisasi dengan objek konteks yang sama dengan yang Anda gunakan untuk menginisialisasi DeliveryDriverApi di DriverSDK, karena objek tersebut merujuk pada ID kendaraan yang sama yang ditentukan sebelumnya dalam objek DriverContext Anda. Contoh berikut 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 objek VehicleRouteOverview untuk berinteraksi dengan kemampuan ringkasan rute. Hal ini memungkinkan aplikasi Anda menggunakan informasi rute yang Anda berikan selama penyiapan rute. Menggunakan pemroses peristiwa API untuk memfasilitasi pembaruan peristiwa dan pengambilan rute.

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


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

Langkah 3 - Aktifkan API

Setelah siap menggunakan informasi rute, Anda harus mengaktifkan API agar memungkinkannya merespons peristiwa kendaraan. Ingat bahwa API diinisialisasi dalam status dinonaktifkan untuk menghindari konsumsi bandwidth jaringan yang tidak perlu.

vehicleRouteOverview.setRouteOverviewEnabled(true);

Anda dapat menjeda update ini kapan saja dengan memanggil metode yang sama dengan nilai 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 instance Google Maps. Cuplikan kode berikut menunjukkan contoh yang menggambar polyline rute 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

Hal ini menghasilkan tampilan yang mirip dengan screenshot di sebelah kanan:

Langkah 5 - Dapatkan snapshot rute

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

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

Anda dapat melakukannya daripada berlangganan pembaruan rute melalui pemroses peristiwa.

Langkah 6 - Pembersihan

Jika aplikasi Anda tidak lagi memerlukan fungsi ringkasan rute, Anda harus memastikan bahwa Anda telah melakukan pembersihan. Melakukan pembersihan akan menghindari konsumsi memori, pemrosesan, dan jaringan yang tidak perlu di 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 berbeda 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();