Pengoptimalan titik jalan adalah fitur Routes Preferred yang memperluas
ComputeRoutes
.
Layanan ini mengoptimalkan urutan titik jalan perantara dalam rute perjalanan,
memastikan bahwa wisatawan menempuh rute seefisien mungkin. ComputeRoutes
Penerapan pengoptimalan titik jalan mendukung mode perjalanan berikut:
- Mengemudi
- Mengendarai kendaraan roda dua bermotor
- Bersepeda
- Jalan Kaki
Mengapa menggunakan pengoptimalan titik jalan?
Saat membuat aplikasi yang memandu pengguna melalui sejumlah titik jalan dalam perjalanan menuju tujuan, penting bagi pelancong untuk melewati titik jalan dalam urutan yang optimal. Hal ini memastikan bahwa pelancong tiba di setiap titik jalan dalam waktu tersingkat.
Cara kerjanya
Secara default, ComputeRoutes
menghitung rute melalui titik jalannya, dalam urutan
saat titik jalan tersebut awalnya diberikan. Anda bisa mendapatkan 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 menyetel kolom
optimizeWaypointOrder
di isi permintaan ke true
.
Catatan: Perhitungan 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
di 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 Universitas Stanford. Titik jalan rute telah diberikan secara berurutan dalam permintaan. Permintaan berisi 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 seperti 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 pengoptimalan titik jalan membalikkan urutan aslinya.
Praktik yang direkomendasikan
Permintaan dengan titik jalan yang dioptimalkan membutuhkan waktu pemrosesan yang lebih lama daripada permintaan perutean
sederhana. Oleh karena itu, sebaiknya tetapkan waktu tunggu yang lebih lama pada panggilan metode
dengan menetapkan nilai untuk header permintaan X-Server-Timeout
setidaknya sepuluh
detik. Jika Anda terus menerima error waktu tunggu, Anda dapat menambahkan satu detik lagi, lalu coba lagi.
Batasan penggunaan
Untuk menggunakan pengoptimalan titik jalan, Anda harus mengikuti batasan dan kondisi penggunaan berikut:
Anda dapat menentukan hingga batas penggunaan untuk titik jalan perantara di rute Anda:
- Hingga 98 titik jalan 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 Anda yang 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:
Jarak garis lurus yang terakumulasi antara semua titik jalan harus kurang dari 1.000 km. Jarak ini mencakup titik asal dan tujuan.
Moda perjalanan harus DRIVE.