אופטימיזציה של נקודות דרך היא תכונת 'מסלולים מועדפים' שמרחיבה את 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
באובייקט routes בגוף התגובה. הקווים הפוליגונים המקודדים זהים לקווים ב-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, על ידי הגדרת ערך של 10 שניות לפחות לכותרת הבקשה X-Server-Timeout
. אם ממשיכות להופיע שגיאות של זמן קצוב פג, אפשר להוסיף עוד שנייה ולנסות שוב.
מגבלות שימוש
כדי להשתמש באופטימיזציה של נקודות ציון, עליכם לפעול בהתאם למגבלות ולתנאים הבאים:
אפשר לציין עד למגבלת השימוש של ציוני דרך ביניים במסלול:
- עד 98 נקודות דרך באמצעות קואורדינטות של קו אורך וקו רוחב בלבד.
- עד 25 נקודות דרך, אם מציינים נקודות דרך באמצעות מזהי מקומות.
כל נקודות העצירה חייבות להיות מסוג stopover. אף אחד מנקודות הדרך לא יכול להיות מסוג דרך.
צריך להוסיף את הערך
routes.optimizedIntermediateWaypointIndex
למסכת השדה.אם הבקשה כוללת 25 נקודות ציון ביניים או יותר, היא צריכה לעמוד גם בתנאים הבאים:
המרחק המצטבר בקו ישר בין כל נקודות הדרך חייב להיות פחות מ-1,000 ק"מ. המרחק הזה כולל גם את נקודת ההתחלה וגם את נקודת היעד.
מצב הנסיעה חייב להיות 'נסיעה'.