Varsayılan olarak, Routes API Compute Routes
yöntemi, sağladığınız sırayla, mola noktası olarak adlandırılan birden fazla durak üzerinden bir rota hesaplar.
Routes API, sağlanan rotayı durakları daha verimli bir sıraya göre yeniden düzenleyerek optimize edebilir. Ara nokta optimizasyonu, seyahat süresini optimize eder ancak en verimli rotaya karar verirken mesafe ve dönüş sayısı gibi diğer faktörleri de dikkate alır.
Ara noktaları optimize etmek için
Rottaki hiçbir ara noktanın
via
ayarınıntrue
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.routing_preference
değerininTRAFFIC_AWARE_OPTIMAL
olarak ayarlanmadığından emin olun.optimize_waypoint_order
değerinitrue
olarak ayarlayın. Örneğin:"optimizeWaypointOrder": "true",
Alan maskesinde
routes.optimizedIntermediateWaypointIndex
alanını belirtin:REST
-H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex
RPC
const (fieldMask = "routes.optimizedIntermediateWaypointIndex")
Ara nokta sırasının nasıl optimize edildiğini anlama
Routes API, bir rotadaki ara noktaların sırasını şu şekilde optimize eder:
İsteğe göre, 0'dan başlayarak sağladığınız sıraya göre ara noktaları otomatik olarak indeksler.
İstekteki yol noktalarına atadığı dizin numaralarını kullanarak yol noktalarının sırasını optimize eder.
routes
nesnesinde,waypoint_order
alanında,routes.optimizedIntermediateWaypointIndex
altında optimize edilmiş rota noktası sırasını döndürür.
Örnek
Bu istekte, Güney Avustralya'daki Adelaide'den Güney Avustralya'nın ana ş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'
Rotalar API'si, istekte sağlanan ara yol noktalarını 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 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 ]