Rotanızdaki durak sırasını optimize edin

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Varsayılan olarak, Routes API'nin Compute Routes yöntemi, sağladığınız sırayla birden fazla durak (geçiş noktası olarak adlandırılır) üzerinden bir rota hesaplar.

Routes API'nin, durakları daha verimli bir sırayla yeniden düzenleyerek sağlanan rotayı optimize etmesini sağlayabilirsiniz. Ara nokta optimizasyonu, seyahat süresini optimize eder ancak en verimli rotayı belirlerken mesafe ve dönüş sayısı gibi diğer faktörleri de dikkate alır.

Ara noktaları optimize etmek için

  1. Rotadaki ara noktalardan hiçbirinde via değerinin true olarak ayarlanmadığından emin olun. Örneğin: {"address": "Clare,SA", "via": true}. Ara yol noktaları hakkında daha fazla bilgi için Ara yol noktaları belirtme başlıklı makaleyi inceleyin.

  2. routing_preference ayarının TRAFFIC_AWARE_OPTIMAL olarak ayarlanmadığından emin olun.

  3. optimize_waypoint_order değerini true olarak ayarlayın. Örneğin:

    "optimizeWaypointOrder": "true",
  4. Alan maskesinde routes.optimizedIntermediateWaypointIndex alanını belirtin:

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    TBG

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

Ara nokta sırasının nasıl optimize edildiğini anlama

Routes API'nin bir rotadaki ara noktaların sırasını nasıl optimize ettiği aşağıda açıklanmıştır:

  1. İsteğe eklediğiniz sıraya göre, 0'dan başlayarak yol noktalarını otomatik olarak indeksler.

  2. İsteklerdeki yol noktalarına atadığı dizin numaralarını kullanarak yol noktalarının sırasını optimize eder.

  3. routes.optimizedIntermediateWaypointIndex altındaki waypoint_order alanında, routes nesnesinde optimize edilmiş ara nokta sırasını döndürür.

Örnek

Bu istekte, Güney Avustralya'daki Adelaide'den Güney Avustralya'nın başlıca şarap bölgelerinin her birine giden ve ardından Adelaide'e dönen bir rota için optimizasyon yapılması isteniyor.

curl -X POST -H 'content-type: application/json' -d ' {
  "origin": {
    "address": "Adelaide,SA"
  },
  "destination": {
    "address": "Adelaide,SA"
  },
  "intermediates": [
    {"address": "Barossa+Valley,SA"},
    {"address": "Clare,SA"},
    {"address": "Coonawarra,SA"},
    {"address": "McLaren+Vale,SA"}
  ],
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": "true"
  }' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes,geocodingResults.intermediates.intermediateWaypointRequestIndex' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Routes API, istekte sağlanan ara noktaları 0'dan başlayarak dizine ekler. Örneğin:

0    {"address": "Barossa+Valley,SA"},
1    {"address": "Clare,SA"},
2    {"address": "Coonawarrav,SA"},
3    {"address": "McLaren+Vale,SA"}

Hizmet, istekte belirtilen dört ara nokta için dizin numaralarını kullanarak optimize edilmiş sırayı döndürür:

"optimizedIntermediateWaypointIndex": [
                3,
                2,
                0,
                1
            ]