Mengoptimalkan titik jalan rute Anda

Pengoptimalan titik jalan adalah fitur Rute Pilihan yang memperluas ComputeRoutes mengoptimalkan urutan titik jalan perantara dalam rute wisatawan, memastikan bahwa mereka melakukan rute yang paling efisien. ComputeRoutes implementasi 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 tujuan, penting bagi wisatawan untuk melintasi titik jalan di urutan yang optimal. Hal ini memastikan bahwa wisatawan tiba di setiap titik jalan dalam waktu yang paling singkat.

Cara kerjanya

Secara default, ComputeRoutes menghitung rute melalui titik jalan, dalam urutan tempat mereka disediakan pada awalnya. Anda bisa mendapatkan ComputeRoutes untuk pengoptimalan rute dengan mengatur ulang titik jalan antara menjadi urutan yang lebih efisien. Anda akan menerima rute dengan titik jalan yang dioptimalkan jika Kolom optimizeWaypointOrder dalam isi permintaan ke true.

Catatan: Penghitungan pengoptimalan titik jalan terutama didasarkan pada waktu perjalanan, tetapi fitur tersebut juga mempertimbangkan faktor lain, seperti jarak dan jumlah belokan.

Mendapatkan titik jalan yang diurutkan ulang

Untuk mendapatkan rute dengan titik jalan yang diurutkan ulang, atur kolom boolean optimizeWaypointOrder kepada true dalam isi permintaan Anda untuk ComputeRoutes. Selain itu, sertakan kolom optimizedIntermediateWaypointIndex di mask kolom. Isi respons berisi urutan titik jalan yang dioptimalkan di kolom optimizedIntermediateWaypointIndex.

Catatan: Kolom optimizedIntermediateWaypointIndex menampilkan data berbasis nol masing-masing.

Contoh permintaan

Contoh permintaan berikut menyediakan rute dekat Stanford Kampus universitas. Titik jalan rute telah disediakan secara berurutan dalam permintaan. Permintaan berisi tempat asal dan tujuan, dengan dua perantara titik jalan.

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 bisa menemukan indeks titik jalan perantara yang diurutkan ulang di Kolom optimizedIntermediateWaypointIndex dalam objek route di isi respons. Baris yang dienkode polyline sama seperti pada 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 pesanan.

Permintaan dengan titik jalan yang dioptimalkan membutuhkan waktu pemrosesan yang lebih lama daripada pemilihan rute sederhana permintaan. Dengan demikian, sebaiknya Anda menetapkan waktu tunggu yang lebih tinggi pada panggilan metode dengan menetapkan nilai header permintaan X-Server-Timeout ke minimal sepuluh detik. Jika Anda terus menerima error waktu tunggu, Anda dapat menambahkan detik lain lalu coba lagi.

Batasan penggunaan

Untuk menggunakan pengoptimalan titik jalan, Anda harus mengikuti batasan penggunaan ini dan kondisi:

  • Anda bisa menetapkan hingga batas penggunaan untuk titik jalan perantara pada rute:

    • 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 harus berjenis perhentian. Tidak ada titik jalan dapat berjenis melalui.

  • Anda harus menambahkan routes.optimizedIntermediateWaypointIndex ke kolom {i>mask<i} ini.

  • Jika permintaan Anda memiliki 25 titik jalan perantara atau lebih, permintaan 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 Berkendara.