Pengoptimalan titik jalan adalah fitur Routes Preferred yang memperluas
ComputeRoutes.
Fitur ini mengoptimalkan urutan titik jalan perantara dalam rute perjalanan,
sehingga memastikan bahwa mereka menempuh rute yang paling efisien. Implementasi pengoptimalan titik jalan ComputeRoutes
mendukung mode perjalanan berikut:
- Mengemudi
- Kendaraan roda dua bermotor
- Bersepeda
- Jalan Kaki
Mengapa menggunakan pengoptimalan titik jalan?
Saat membuat aplikasi yang memandu pengguna melalui sejumlah titik jalan dalam perjalanan ke tujuan, penting bagi pelancong untuk melintasi titik jalan dalam urutan yang optimal. Hal ini memastikan bahwa pelancong tiba di setiap titik jalan dalam waktu sesingkat mungkin.
Cara kerjanya
Secara default, ComputeRoutes menghitung rute melalui titik jalan, sesuai urutan yang diberikan di awal. Anda dapat meminta ComputeRoutes untuk mengoptimalkan rute dengan menyusun ulang titik jalan perantara ke dalam urutan yang lebih efisien.
Anda akan menerima rute dengan titik jalan yang dioptimalkan jika Anda menetapkan kolom optimizeWaypointOrder dalam isi permintaan ke true.
Catatan: Penghitungan pengoptimalan titik jalan terutama didasarkan pada waktu perjalanan, tetapi fitur ini juga mempertimbangkan faktor lain, seperti jarak dan jumlah belokan.
Mendapatkan titik jalan yang diurutkan ulang
Untuk mendapatkan rute dengan titik jalan yang diurutkan ulang, tetapkan kolom boolean
optimizeWaypointOrder ke true dalam isi permintaan Anda ke
ComputeRoutes. Selain itu, sertakan kolom optimizedIntermediateWaypointIndex
dalam mask kolom. Isi respons berisi urutan titik jalan yang dioptimalkan di kolom optimizedIntermediateWaypointIndex.
Catatan: Kolom optimizedIntermediateWaypointIndex menampilkan nilai berbasis nol.
Contoh permintaan
Contoh permintaan berikut menyediakan rute di dekat kampus Stanford University. Titik jalan rute telah diberikan secara berurutan dalam permintaan. Permintaan berisi tempat asal dan tujuan, dengan dua titik jalan perantara.
POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
"origin":{
"location":{
"latLng":{
"latitude": 37.418956,
"longitude": -122.160815
}
}
},
"intermediates": [
{
"location":{
"latLng":{
"latitude": 37.4176423,
"longitude":-122.1102246
}
}
},
{
"location":{
"latLng":{
"latitude": 37.407689,
"longitude": -122.1360597
}
}
}
],
"destination":{
"location":{
"latLng":{
"latitude": 37.4032137,
"longitude": -122.0349119
}
}
},
"travelMode": "DRIVE",
"optimizeWaypointOrder": true,
"routingPreference": "TRAFFIC_AWARE"}
Contoh respons
Anda dapat menemukan indeks titik jalan perantara yang diurutkan ulang di kolom optimizedIntermediateWaypointIndex dalam objek rute di isi respons. Polyline yang dienkode sama dengan di Directions API dan ComputeRoutes.
routes {
distance_meters: 17647
duration {
seconds: 1866
}
polyline {
encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
}
optimizedIntermediateWaypointIndex: 1
optimizedIntermediateWaypointIndex: 0
}
Dalam contoh ini, perhatikan bahwa mengoptimalkan titik jalan akan membalikkan urutan aslinya.
Praktik yang direkomendasikan
Permintaan dengan titik jalan yang dioptimalkan memerlukan waktu lebih lama untuk diproses daripada permintaan pemilihan rute sederhana. Oleh karena itu, sebaiknya tetapkan waktu tunggu yang lebih tinggi pada panggilan metode
dengan menetapkan nilai untuk header permintaan X-Server-Timeout ke setidaknya sepuluh
detik. Jika terus menerima error waktu tunggu, Anda dapat menambahkan satu detik lagi, lalu mencoba lagi.
Batasan penggunaan
Untuk menggunakan pengoptimalan titik jalan, Anda harus mengikuti batasan dan ketentuan penggunaan berikut:
Anda dapat menentukan hingga batas penggunaan untuk titik jalan perantara di rute Anda:
- Hingga 98 titik jalan yang hanya menggunakan koordinat lintang dan bujur.
- Hingga 25 titik jalan jika Anda menentukan titik jalan menggunakan ID tempat.
Semua titik jalan Anda harus berjenis persinggahan. Tidak ada titik jalan yang dapat berjenis via.
Anda harus menambahkan
routes.optimizedIntermediateWaypointIndexke mask kolom.Jika permintaan Anda memiliki 25 titik jalan perantara atau lebih, permintaan tersebut juga harus mematuhi ketentuan berikut:
Akumulasi jarak garis lurus antara semua titik jalan harus kurang dari 1.000 km. Jarak ini mencakup tempat asal dan tujuan.
Mode perjalanan harus DRIVE.