כברירת מחדל, הפונקציה 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
.
דוגמה
בבקשה הזו מבקשים אופטימיזציה של מסלול מאדלייד שבדרום אוסטרליה לכל אחד מאזורי היין העיקריים בדרום אוסטרליה, ואז חזרה לאדלייד.
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'
ממשק Routes 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 ]