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

Varsayılan olarak Routes API Compute Routes yöntemi, birden fazla duraktan geçen rotayı, ara nokta adı verilen ve sizin sağladığınız sırayla hesaplar.

Routes API'nin, durakları daha verimli bir sırada yeniden düzenleyerek sağlanan rotayı optimize etmesini sağlayabilirsiniz. Referans noktası optimizasyonu, seyahat süresini optimize eder. Bununla birlikte, hangi rotanın en verimli olduğuna karar verirken mesafe ve dönüş sayısı gibi diğer faktörleri de dikkate alır.

Ara noktaları optimize etmek için

  1. Rotadaki ara noktaların hiçbirinde via değerinin true olarak ayarlanmadığından emin olun, örneğin: {"address": "Clare,SA", "via": true}. Ara noktalar hakkında daha fazla bilgi edinmek için Ara ara noktalar belirtme bölümüne bakın.

  2. routing_preference öğesinin 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. Ara noktaları, istekte sağladığınız sıraya göre 0'dan başlayarak otomatik olarak dizine ekler.

  2. İstekteki ara noktalara atadığı dizin numaralarını kullanarak ara noktaların sırasını optimize eder.

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

Örnek

Bu istek, Güney Avustralya'nın Adelaide şehrinden Güney Avustralya'nın ana şarap bölgelerinin her birine gidip Adelaide'a dönüş için bir rotanın optimize edilmesini istiyor.

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": "Connawarra,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.optimizedIntermediateWaypointIndex' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

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

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

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

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