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

Varsayılan olarak Routes API Compute Routesmetodu, birden fazla duraktan geçen bir rotayı (durak ara noktaları olarak adlandırılır) sağladığınız sırayla hesaplar.

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

Yol noktalarını optimize etmek için

  1. Rotadaki yol işaretlerinin hiçbirinde via değerinin true (ör. {"address": "Clare,SA", "via": true}) olarak ayarlanmadığından emin olun. Ara yol işaretleri hakkında daha fazla bilgi için Ara yol işaretleri belirtme başlıklı makaleyi inceleyin.

  2. routing_preference değerinin 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

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

Dönüm noktası sırasının nasıl optimize edildiğini anlama

Routes API, bir rotadaki yol işaretlerinin sırasını nasıl optimize eder?

  1. Dönüm noktalarını, istekte belirttiğiniz 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ında optimize edilmiş yol noktası sırasını döndürür.

Örnek

Bu istek, Güney Avustralya'nın Adelaide kentinden Güney Avustralya'nın ana şarap bölgelerinin her birine gidip Adelaide'e geri dönen bir rota için optimizasyon yapılmasını ister.

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'

Rotalar API'si, istekte sağlanan ara yol işaretlerini 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"}

Ardından hizmet, istekte sağlanan dört ara noktanın dizin numaralarını kullanarak optimize edilmiş sırayı döndürür:

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