Merencanakan rute

Terkadang, Anda mungkin ingin merencanakan rute yang diberikan aplikasi untuk pengemudi. Penggunaan token rute dari Routes API (atau Routes Preferred API) dapat membantu Anda menentukan dua hal untuk rute yang direncanakan:

  • Polyline untuk rute

  • Tujuan rute Anda

Misalnya, berikut adalah beberapa contoh tujuan pemilihan rute yang mungkin Anda miliki:

  • Meminimalkan waktu pengiriman: Bisnis yang mengirimkan makanan mungkin ingin meminimalkan waktu yang dibutuhkan untuk mengirimkan makanan.

  • Meminimalkan waktu perjalanan atau konsumsi bahan bakar: Bisnis logistik mungkin ingin meningkatkan efisiensi pengemudi dan mengurangi biaya bahan bakar.

  • Meminimalkan waktu ke tujuan: Operasi pengiriman layanan mungkin ingin meminimalkan waktu yang diperlukan untuk mengalihkan operator ke permintaan tugas.

  • Menurunkan biaya dan meningkatkan keselamatan: Bisnis transportasi online mungkin ingin menemukan rute yang hemat biaya bagi penumpang dan menghindari area tertentu untuk alasan keamanan.

Untuk mengetahui informasi lebih lanjut tentang cara merencanakan rute menggunakan token rute, baca bagian Meminta token rute.

Alasan menggunakan token rute untuk tujuan rute

Dengan token rute dari Routes atau Routes Preferred API, Anda memiliki lebih banyak kontrol atas rute yang diberikan:

  • Rencanakan rute terlebih dahulu untuk digunakan oleh Navigation SDK jika memungkinkan.

  • Pilih rute terbaik yang akan digunakan Navigation SDK. Jika Anda meminta token rute saat membuat rute di Routes API, Anda akan mendapatkan token rute untuk setiap rute yang dibuat. Anda kemudian dapat memilih token untuk rute yang ingin digunakan saat meneruskannya ke Navigation SDK.

  • Perkirakan harga di muka, termasuk perkiraan PWT dan jarak. Meskipun biaya dan waktu sebenarnya mungkin berbeda, perkiraan ini mengurangi kesenjangan antara biaya rute yang diharapkan dan yang sebenarnya.

  • Tentukan tujuan rute lanjutan lainnya, seperti pemilihan rute hemat energi atau rute terpendek.

Cara kerja token rute Routes API

Anda dapat menggunakan Routes API atau Routes Preferred API untuk merencanakan rute menggunakan tujuan rute. Routes API menampilkan token rute yang dapat Anda teruskan ke Navigation SDK untuk memandu cara mengarahkan kendaraan Anda.

Berikut yang terjadi saat Anda meminta dan menggunakan token rute dari Routes API:

  1. Routes API menampilkan token rute terenkripsi yang menyertakan polyline rute dan tujuan rute.

  2. Anda meneruskan token rute ke Navigation SDK.

  3. Navigation SDK mengambil rute, atau jika rute tidak tersedia karena perubahan kondisi, Navigation SDK akan mengambil rute terbaik yang cocok.

  4. Saat mengemudikan rute, jika lalu lintas atau kondisi jalan lainnya berubah, atau jika kendaraan menyimpang dari rute yang direncanakan, rute yang dimodifikasi akan terus mencoba mencocokkan rute terbaik berdasarkan tujuan rute dalam token.

Proses ini memaksimalkan seberapa dekat rute sebenarnya dengan rute yang Anda rencanakan.

Mengapa rute yang direncanakan tidak dapat diikuti dengan tepat

Pikirkan rute dan tujuan rute yang direncanakan sebagai panduan yang harus diikuti: tujuan tersebut bukan preskriptif. Anda mungkin melihat perbedaan antara rute yang direncanakan dan rute yang disediakan oleh navigasi terpandu karena adanya perbedaan kondisi jalan, lokasi awal, atau parameter lain yang telah berubah sejak Anda membuat rute yang direncanakan. Perbedaan ini dapat mengakibatkan ketidakcocokan antara sasaran yang direncanakan dan yang sebenarnya untuk jarak dan PWT, di antara kualitas perjalanan penting lainnya.

Merencanakan rute menggunakan token rute

Anda dapat merencanakan rute dengan membuat token rute, lalu meneruskannya ke Navigation SDK, seperti yang dijelaskan dalam langkah-langkah berikut:

Langkah 1: Buat token rute menggunakan Routes atau Routes Preferred API

  1. Minta token rute dengan salah satu metode berikut:

    • Routes API: computeRoutes. Untuk mengetahui informasi lebih lanjut tentang cara meminta token rute di Routes API, lihat Menghitung rute dan Meminta token rute.

    • Routes Preferred API: computeCustomRoutes. Untuk mengetahui informasi selengkapnya tentang cara meminta token rute di Routes Preferred API, lihat Merencanakan rute.

  2. Siapkan permintaan rute untuk memenuhi persyaratan penggunaan token rute:

    • Tetapkan travel_mode ke DRIVING
    • Tetapkan routing_preference ke TRAFFIC_AWARE atau TRAFFIC_AWARE_OPTIMAL
    • JANGAN gunakan titik jalan Melalui

Langkah 2: Teruskan token rute ke Navigation SDK

  1. Simpan token rute: Di Navigation SDK, siapkan string untuk menyimpan token rute. Contoh:

    String routeToken = "route token returned by Routes API";

    Contoh token rute yang ditampilkan:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Teruskan token rute ke Navigation SDK menggunakan metode Navigator.setDestinations, dengan menentukan titik jalan tujuan yang sama dengan yang Anda gunakan saat membuat token rute:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    Contoh:

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

Metode Navigator.setDestinations akan menampilkan status permintaan. Jika menemukan rute dari lokasi kendaraan ke tujuan tertentu, aplikasi akan menampilkan RouteStatus.OK.

Untuk informasi selengkapnya tentang metode ini, lihat Navigator.setDestinations.

Contoh

Contoh kode berikut menunjukkan cara menentukan rute yang direncanakan menggunakan token rute.

    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);

    String routeToken = "route token returned by Routes API";

    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .build();

    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);

    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);

    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();

    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);

Cara token rute dan Navigation SDK berinteraksi

Berikut adalah cara interaksi rute yang dihasilkan oleh Navigation SDK dan rute yang direncanakan dalam token rute:

  • Mengganti tujuan yang telah ditetapkan sebelumnya.

  • Menggunakan lokasi awal kendaraan.

  • Sesuaikan dengan kondisi jalan dan lalu lintas. Lihat Mengapa rute yang direncanakan tidak dapat diikuti dengan tepat.

  • Mengabaikan opsi terkait perutean berikut sebagai tidak diperlukan:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Mengikuti:

    • Opsi terkait titik jalan, seperti preferensi sisi jalan.

    • Tujuan rute. Jika Navigation SDK harus menyesuaikan rute yang ditampilkan, Navigation SDK akan menggunakan tujuan rute yang Anda tentukan saat meminta token rute. Karena alasan ini, Anda harus menggunakan opsi terkait titik jalan yang sama dengan yang Anda tetapkan di Routes API.