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

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

  • נהיגה
  • דו-גלגלי ממונעים
  • רכיבה על אופניים
  • הליכה

למה כדאי להשתמש באופטימיזציה של ציוני דרך?

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

איך זה עובד

כברירת מחדל, ComputeRoutes מחשב מסלול שעובר דרך ציוני הדרך שלו, לפי הסדר שבה הם סופקו במקור. אפשר לקבל ComputeRoutes כדי לבצע אופטימיזציה את הנתיב על ידי סידור מחדש של נקודות הביניים בסדר יעיל יותר. תקבל מסלול עם ציוני דרך שעברו אופטימיזציה אם תגדיר את השדה optimizeWaypointOrder בגוף הבקשה אל true.

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

קבלת סידור מחדש של ציוני דרך

כדי לקבל מסלול עם ציוני דרך בסדרת סדר שונה, יש להגדיר את השדה הבוליאני optimizeWaypointOrder אל true בגוף הבקשה אל ComputeRoutes. צריך לכלול גם את השדה optimizedIntermediateWaypointIndex במסכת השדות. גוף התשובה מכיל את הסדר שעבר אופטימיזציה ב- השדות optimizedIntermediateWaypointIndex.

הערה: השדה optimizedIntermediateWaypointIndex מחזירה מודל אפס. ערכים.

דוגמה לבקשה

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

POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.418956,
        "longitude": -122.160815
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.4176423,
          "longitude":-122.1102246
        }
      }
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.407689,
          "longitude": -122.1360597
        }
      }
    }
  ],
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.4032137,
        "longitude": -122.0349119
      }
    }
  },
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": true,
  "routingPreference": "TRAFFIC_AWARE"}

דוגמה לתגובה

ניתן למצוא את האינדקסים של ציוני הדרך ברמת הביניים שמסודרים מחדש שדות optimizedIntermediateWaypointIndex בתוך אובייקט הנתיבים ב- גוף התגובה. הקוד המקודד קו פוליגוני זהה ל- Directions API וגם ComputeRoutes.

routes {
  distance_meters: 17647
  duration {
    seconds: 1866
  }
  polyline {
    encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
  }
  optimizedIntermediateWaypointIndex: 1
  optimizedIntermediateWaypointIndex: 0
}

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

עיבוד בקשה עם ציוני דרך שעברו אופטימיזציה נמשך זמן רב יותר מאשר ניתוב פשוט בקשה. לכן, מומלץ להגדיר זמן קצוב ארוך יותר להפעלת ה-method על ידי הגדרת ערך לכותרת הבקשה X-Server-Timeout לפחות לעשר שניות. אם מתקבלות שגיאות של זמן קצוב לתפוגה, אפשר להוסיף עוד שנייה ולנסות שוב.

מגבלות שימוש

כדי להשתמש באופטימיזציה של ציוני דרך, עליך לפעול בהתאם למגבלות השימוש הבאות תנאים:

  • ניתן להגדיר עד מגבלת השימוש לנקודות ציון ביניים נתיב:

    • עד 98 ציוני דרך תוך שימוש בקואורדינטות של קווי אורך ורוחב בלבד.
    • עד 25 ציוני דרך אם מציינים ציוני דרך באמצעות מזהי מקומות.
  • כל נקודות הדרך חייבות להיות מסוג עצירת ביניים. אף אחת מציוני הדרך הוא יכול להיות מסוג דרך.

  • צריך להוסיף את routes.optimizedIntermediateWaypointIndex לשדה לבצע אנונימיזציה.

  • אם הבקשה כוללת 25 ציוני דרך או יותר, היא חייבת גם לציית לתנאים הבאים:

    • המרחק של הקו הישר שנצבר בין כל נקודות הדרך חייב להיות פחות מ-1,000 ק"מ. המרחק הזה כולל גם את נקודת המוצא וגם את היעד.

    • מצב הנסיעה חייב להיות drive.