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, 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 rotayı belirlerken 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
viadeğerinintrueolarak 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_preferenceayarınınTRAFFIC_AWARE_OPTIMALolarak ayarlanmadığından emin olun.optimize_waypoint_orderdeğerinitrueolarak ayarlayın. Örneğin:"optimizeWaypointOrder": "true",
Alan maskesinde
routes.optimizedIntermediateWaypointIndexalanı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'nin bir rotadaki ara noktaların sırasını nasıl optimize ettiği aşağıda açıklanmıştır:
İsteğe eklediğiniz sıraya göre, 0'dan başlayarak yol noktalarını otomatik olarak indeksler.
İsteklerdeki yol noktalarına atadığı dizin numaralarını kullanarak yol noktalarının sırasını optimize eder.
routesnesnesinde,waypoint_orderalanında,routes.optimizedIntermediateWaypointIndexaltı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 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'
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 belirtilen dört ara nokta için dizin numaralarını kullanarak optimize edilmiş sırayı döndürür:
"optimizedIntermediateWaypointIndex": [ 3, 2, 0, 1 ]