כברירת מחדל, הפונקציה 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 ]