Merencanakan rute

Terkadang, Anda mungkin ingin merencanakan rute yang disediakan aplikasi Anda kepada pengguna. Menggunakan token rute dari Routes API, Routes Preferred API, atau Route Optimization API dapat membantu Anda menentukan dua hal untuk rute yang direncanakan:

  • Polyline untuk rute

  • Tujuan rute Anda

Misalnya, berikut beberapa contoh tujuan perutean yang mungkin Anda miliki:

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

  • Meminimalkan waktu tempuh 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 dibutuhkan untuk mendapatkan operator ke permintaan pekerjaan.

  • Menurunkan biaya dan meningkatkan keamanan: Bisnis berbagi kendaraan mungkin ingin menemukan rute yang lebih murah bagi penumpang dan menghindari area tertentu karena alasan keamanan.

Untuk mengetahui informasi selengkapnya tentang cara merencanakan rute menggunakan token rute, lihat Meminta token rute di Routes API dan Transisi Polyline dan Token Rute di Route Optimization API.

Mengapa menggunakan token rute untuk tujuan rute

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

  • Merencanakan rute terlebih dahulu agar Navigation SDK dapat menggunakannya jika memungkinkan.

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

  • Memperkirakan harga terlebih dahulu, termasuk perkiraan untuk ETA dan jarak. Meskipun biaya dan waktu sebenarnya mungkin berbeda, perkiraan ini akan mengurangi kesenjangan antara biaya rute yang diharapkan dan sebenarnya.

  • Menentukan tujuan rute yang lebih canggih, seperti perutean ramah lingkungan atau rute terpendek.

Cara kerja token rute

Anda dapat menggunakan Routes API, Routes Preferred API, atau Route Optimization API untuk merencanakan rute menggunakan tujuan rute. Anda dapat meneruskan token rute yang ditampilkan dari salah satu API ini ke Navigation SDK untuk memandu cara merutekan kendaraan Anda.

Berikut yang terjadi saat Anda meminta dan menggunakan token rute:

  1. Routes API, Routes Preferred API, atau Route Optimization API menampilkan token rute terenkripsi yang mencakup polyline rute dan tujuan rute.

  2. Anda meneruskan token rute ke Navigation SDK.

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

  4. Saat mengemudi di rute, jika lalu lintas atau kondisi jalan lainnya berubah, atau jika kendaraan menyimpang dari rute yang direncanakan, rute yang diubah akan terus berupaya mencocokkan rute terbaik berdasarkan tujuan rute dalam token.

Proses ini memaksimalkan seberapa dekat rute sebenarnya dengan rute yang direncanakan.

Alasan rute yang direncanakan mungkin tidak diikuti dengan tepat

Anggap tujuan rute dan rute yang direncanakan sebagai panduan yang harus diikuti: keduanya tidak bersifat preskriptif. Anda mungkin melihat perbedaan antara rute yang direncanakan dan rute yang diberikan oleh navigasi terpandu karena perbedaan kondisi jalan, lokasi awal, atau parameter lain yang telah berubah sejak Anda membuat rute yang direncanakan. Perbedaan ini dapat menyebabkan ketidakcocokan antara tujuan yang direncanakan dan sebenarnya untuk jarak dan ETA, 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 API, Routes Preferred API, atau Route Optimization API

  1. Minta token rute dengan salah satu metode berikut:

    • Routes API: computeRoutes. Untuk mengetahui informasi selengkapnya 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.

    • Route Optimization API: optimizeTours atau batchOptimizeTours. Untuk mengetahui informasi selengkapnya tentang cara meminta token rute di Route Optimization API, lihat Transisi Polyline dan Token Rute.

  2. Siapkan permintaan Routes API atau Routes Preferred API untuk memenuhi persyaratan penggunaan token rute:

    • Tetapkan travel_mode ke DRIVE atau TWO_WHEELER
    • Tetapkan routing_preference ke TRAFFIC_AWARE atau TRAFFIC_AWARE_OPTIMAL
    • JANGAN gunakan titik jalan Via

Langkah 2: Teruskan token rute ke Navigation SDK

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

    let 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 mapView.navigator setDestinations, dengan menentukan titik jalan tujuan yang sama yang Anda gunakan saat membuat token rute:

    mapView.navigator?.continueToNextDestination([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
    

    Metode Navigator.continueToNextDestination menampilkan status permintaan. Jika rute ditemukan dari lokasi pengguna ke tujuan yang diberikan, metode ini akan menampilkan RouteStatus.OK.

Skenario multi-stop

Anda dapat mengonfigurasi maksimum 25 titik jalan.

Metode setDestinations tidak mendukung perjalanan multi-stop. Gunakan continueToNextDestination() untuk memajukan titik jalan ke bagian perjalanan berikutnya.

Contoh

Contoh kode berikut menunjukkan cara mengambil rute yang direncanakan.

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator continueToNextDestination:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

Cara token rute dan Navigation SDK berinteraksi

Berikut cara rute yang dibuat oleh Navigation SDK dan rute yang direncanakan dalam token rute berinteraksi:

  • Mengganti tujuan yang ditetapkan sebelumnya.

  • Menggunakan lokasi awal kendaraan.

  • Menyesuaikan kondisi jalan dan lalu lintas. Lihat Alasan rute yang direncanakan mungkin tidak diikuti dengan tepat.

  • Mengabaikan opsi terkait perutean berikut karena 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. Oleh karena itu, Anda harus menggunakan opsi terkait titik jalan yang sama yang Anda tentukan di Routes API.