Pengoptimalan titik jalan adalah fitur Rute yang Disukai yang memperluas
ComputeRoutes
.
Fitur ini mengoptimalkan urutan titik jalan perantara dalam rute wisatawan,
sehingga memastikan mereka menempuh rute yang paling efisien. Penerapan ComputeRoutes
untuk pengoptimalan titik jalan mendukung mode perjalanan berikut:
- Mengemudi
- Roda dua bermotor
- Bersepeda
- Jalan Kaki
Mengapa menggunakan pengoptimalan titik jalan?
Saat membangun aplikasi yang memandu pengguna melalui sejumlah titik jalan dalam perjalanan ke suatu tujuan, wisatawan harus melewati titik jalan tersebut dalam urutan yang optimal. Hal ini memastikan bahwa wisatawan tiba di setiap titik jalan dalam waktu tersingkat.
Cara kerjanya
Secara default, ComputeRoutes
menghitung rute melalui titik jalannya, sesuai urutan awal yang diberikan. Anda bisa mendapatkan ComputeRoutes
untuk mengoptimalkan
rute dengan menyusun ulang titik jalan perantara menjadi urutan yang lebih efisien.
Anda akan menerima rute dengan titik jalan yang dioptimalkan jika 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
di 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
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 pengoptimalan titik jalan akan membalikkan urutan aslinya.
Praktik yang direkomendasikan
Permintaan dengan titik jalan yang dioptimalkan membutuhkan waktu pemrosesan yang lebih lama daripada permintaan pemilihan rute yang sederhana. Karena itu, sebaiknya tetapkan waktu tunggu yang lebih tinggi pada panggilan metode
dengan menyetel nilai untuk header permintaan X-Server-Timeout
setidaknya ke sepuluh
detik. Jika terus mengalami error waktu tunggu, Anda dapat menambahkan detik lagi, lalu mencoba lagi.
Batasan penggunaan
Untuk menggunakan pengoptimalan titik jalan, Anda harus mengikuti batasan dan ketentuan penggunaan berikut:
Anda dapat menetapkan hingga batas penggunaan untuk titik jalan perantara di rute:
- Hingga 98 titik jalan hanya menggunakan koordinat lintang dan bujur.
- Hingga 25 titik jalan jika Anda menetapkan titik jalan menggunakan ID tempat.
Semua titik jalan Anda harus berjenis stopover. Tidak satu pun titik jalan Anda dapat berjenis via.
Anda harus menambahkan
routes.optimizedIntermediateWaypointIndex
ke mask kolom.Jika permintaan Anda memiliki 25 titik jalan perantara atau lebih, permintaan tersebut juga harus mematuhi kondisi 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.