כברירת מחדל, השיטה Compute Routes
של Routes API מחשבת מסלול עם כמה תחנות, שנקראות נקודות עצירה ביניים, לפי הסדר שבו סיפקת אותן.
אפשר לבקש מ-Routes API לבצע אופטימיזציה של המסלול שסופק על ידי סידור מחדש של התחנות בסדר יעיל יותר. כשמשתמשים באופטימיזציה לפי נקודות דרך, המערכת מבצעת אופטימיזציה של זמן הנסיעה, אבל היא גם מביאה בחשבון גורמים אחרים כמו המרחק ומספר הפניות כשהיא מחליטה איזה מסלול הכי יעיל.
כדי לבצע אופטימיזציה של נקודות ציון
מוודאים שאף אחת מנקודות העצירה במסלול לא מוגדרת כ-
via
true
, לדוגמה:{"address": "Clare,SA", "via": true}
. מידע נוסף על נקודות ציון ביניים זמין במאמר ציון נקודות ציון ביניים.מוודאים שהערך של
routing_preference
לא מוגדר כ-TRAFFIC_AWARE_OPTIMAL
.מגדירים את
optimize_waypoint_order
להיותtrue
. לדוגמה:"optimizeWaypointOrder": "true",
מציינים את השדה
routes.optimizedIntermediateWaypointIndex
במסכת השדה:REST
-H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex
RPC
const (fieldMask = "routes.optimizedIntermediateWaypointIndex")
איך מתבצעת אופטימיזציה של סדר הנקודות
כך המערכת של Routes API מבצעת אופטימיזציה של הסדר של נקודות העצירה במסלול:
הוספת הנקודות לנקודות הדרך באופן אוטומטי לפי הסדר שבו הן מופיעות בבקשה, החל מ-0.
מבצע אופטימיזציה של הסדר של נקודות הדרך באמצעות מספרי האינדקס שהוקצו לנקודות הדרך בבקשה.
הפונקציה מחזירה את הסדר האופטימלי של נקודות הדרך באובייקט
routes
, בשדהwaypoint_order
, בקטעroutes.optimizedIntermediateWaypointIndex
.
דוגמה
בבקשה הזו מבקשים לבצע אופטימיזציה למסלול מאדלaide שבדרום אוסטרליה לכל אחד מאזורי היין העיקריים בדרום אוסטרליה, ולאחר מכן חזרה לאדלaide.
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'
ממשק ה-API למסלולים יוצר אינדקס של נקודות הציון הביניים שצוינו בבקשה, החל מ-0. לדוגמה:
0 {"address": "Barossa+Valley,SA"}, 1 {"address": "Clare,SA"}, 2 {"address": "Coonawarrav,SA"}, 3 {"address": "McLaren+Vale,SA"}
לאחר מכן, השירות מחזיר את הסדר המותאם באמצעות מספרי האינדקס של ארבע נקודות העצירה שצוינו בבקשה:
"optimizedIntermediateWaypointIndex": [ 3, 2, 0, 1 ]