Mengoptimalkan titik jalan rute Anda

Pengoptimalan titik jalan adalah fitur Rute Pilihan yang memperluas ComputeRoutes. Fitur ini mengoptimalkan urutan titik jalan perantara dalam rute wisatawan, memastikan titik jalan tersebut menempuh rute yang paling efisien. Implementasi ComputeRoutes pada pengoptimalan titik jalan mendukung mode perjalanan berikut:

  • Mengemudi
  • 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, wisatawan harus menjelajahi titik jalan dalam urutan yang optimal. Hal ini memastikan wisatawan tiba di setiap titik jalan dalam waktu tersingkat.

Cara kerjanya

Secara default, ComputeRoutes menghitung rute melalui titik jalan, dalam urutan awalnya diberikan. Anda dapat memperoleh 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 diubah 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 dekat kampus Universitas Stanford. Titik jalan rute telah disediakan 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 dalam 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 akan membalik urutan aslinya.

Permintaan dengan titik jalan yang dioptimalkan membutuhkan waktu pemrosesan yang lebih lama daripada permintaan pemilihan rute yang sederhana. Dengan demikian, sebaiknya tetapkan waktu tunggu yang lebih tinggi 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 detik lain lalu mencoba lagi.

Batasan penggunaan

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

  • Anda dapat 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. Titik jalan tidak boleh 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 Berkendara.