אופטימיזציה של נקודות ציון היא תכונה של Routes Preferred שמתפרסת על פני 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
בתוך אובייקט הנתיבים בגוף התשובה. ה-polyline המקודד זהה לזה שב-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.