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

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

אתם יכולים להגדיר מחדש את העצירות לפי סדר יעיל יותר כדי שה-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.

דוגמה

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

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
            ]