אופטימיזציה של סדר העצירות במסלול

כברירת מחדל, השיטה Compute Routes של Routes API מחשבת מסלול עם כמה תחנות, שנקראות נקודות עצירה ביניים, לפי הסדר שבו סיפקת אותן.

אפשר לבקש מ-Routes API לבצע אופטימיזציה של המסלול שסופק על ידי סידור מחדש של התחנות בסדר יעיל יותר. כשמשתמשים באופטימיזציה לפי נקודות דרך, המערכת מבצעת אופטימיזציה של זמן הנסיעה, אבל היא גם מביאה בחשבון גורמים אחרים כמו המרחק ומספר הפניות כשהיא מחליטה איזה מסלול הכי יעיל.

כדי לבצע אופטימיזציה של נקודות ציון

  1. מוודאים שאף אחת מנקודות הדרך במסלול לא מוגדרת כ-viatrue, לדוגמה: {"address": "Clare,SA", "via": true}. מידע נוסף על בין ציוני דרך ברמת הביניים, ציון ציוני דרך.

  2. יש לוודא שהערך בשדה routing_preference לא מוגדר כ-TRAFFIC_AWARE_OPTIMAL.

  3. מגדירים את optimize_waypoint_order להיות true. לדוגמה:

    "optimizeWaypointOrder": "true",
  4. מציינים את השדה routes.optimizedIntermediateWaypointIndex בשדה מסכה:

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

הסבר על אופטימיזציה של סדר ציון הדרך

כך המערכת של Routes API מבצעת אופטימיזציה של הסדר של נקודות העצירה במסלול:

  1. המערכת מוסיפה אוטומטית את נקודות הדרך לאינדקס לפי הסדר שבו ציינתם אותן בבקשה, החל מ-0.

  2. מבצע אופטימיזציה של הסדר של נקודות הדרך באמצעות מספרי האינדקס שהוקצו לנקודות הדרך בבקשה.

  3. מחזירה את הסדר האופטימלי של ציון הדרך באובייקט 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
            ]