התכונה 'מניעת פניית פרסה' היא תכונה לאופטימיזציה של מסלולים שמונעת מכלי רכב לבצע פניית פרסה במיקום איסוף או מסירה ספציפי של ביקור. אם מגדירים הימנעות מפרסה, מציינים שהרכב צריך להיות באותו כיוון כשהוא מגיע למיקום ביקור וכשהוא יוצא ממנו.
כך פועלת התכונה 'מניעת פניית פרסה':
- אתם מגדירים את המאפיין של הימנעות מפניית פרסה בביקור ספציפי.
- ה-API מביא בחשבון את שני כיווני הנסיעה בכבישים דו-סטריים ובוחר את המסלול האופטימלי ביותר.
- ממשק ה-API יוצר מסלול שבו הרכב מגיע ועוזב בלי לבצע פניית פרסה במיקום הביקור. יכול להיות שהנהג יצטרך לחצות את הכביש כדי להגיע למיקום הזה.
המאפיין הזה מתאים למצבים שבהם קשה או בלתי אפשרי לבצע פניית פרסה בגלל גודל הרכב, תמרורים או מצב התנועה הרגיל.
מאפיינים
מאפיין הימנעות מביצוע פניית פרסה מוגדר באובייקט VisitRequest.
האובייקט הזה משמש בתוך המערכים pickups ו-deliveries של משלוח.
| נכס | סוג | תיאור |
|---|---|---|
avoidUTurns |
בוליאני | אם הערך הוא true, ה-API מונע מהרכב לבצע פניית פרסה במיקום הביקור הזה. הרכב יגיע ויעזוב כשהוא פונה לאותו כיוון. |
דוגמאות
בקטע הזה יש שתי דוגמאות:
- דוגמאות קוד שממחישות את המבנה של הימנעות מפניית פרסה.
- דוגמה לבקשה שכוללת את התכונה.
דוגמאות קוד
בדוגמה הבאה אפשר לראות את המבנה שלavoidUTurns בתוך איסוף ומשלוח:
"pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ]
דוגמה לבקשה
בדוגמה הבאה מוצגת בקשת optimizeTours בסיסית שכוללת הימנעות מביצוע פניית פרסה. הבקשה הזו כוללת את הרכיבים הבאים:
- משלוח עם איסוף ומסירה בתוך האובייקט
model. - המאפיין
avoidUTurnsמוגדר לערךtrueגם במיקומי האיסוף וגם במיקומי המסירה, כדי למנוע מכלי הרכב לשנות כיוון בתחנות האלה.
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
הימנעות מפרסום מודעות עם sideOfRoad
למרות ש-sideOfRoad היא תכונה נפרדת, היא קשורה באופן הדוק להימנעות מפניות פרסה כי היא מונעת הרבה פניות פרסה על ידי ניתוב הרכב לצד הכביש שהכי קרוב ליעד. כך הרכב יגיע למיקום הביקור מכיוון מסוים, ולא יצטרך לבצע פניית פרסה.
בפועל, כדאי להשתמש בהימנעות מפרסה כשבטוח לחצות את הכביש ברגל כדי להגיע למיקום הביקור. אם לא מומלץ לחצות את הכביש או שאי אפשר לעשות זאת, כדאי להגדיר את sideOfRoad לערך true.
המאפיין sideOfRoad מוגדר בתוך אובייקט Waypoint.
אינטראקציה עם תכונות אחרות
התכונה 'מניעת פניית פרסה' פועלת בשילוב עם תכונות אחרות של ניתוב בדרכים הבאות:
- צד הכביש: הגדרת
avoidUTurnsו-sideOfRoadלערךtrueמגדילה מעט את הסיכויים להימנע מפניית פרסה בזמן ניתוב הרכב לצד הכביש הקרוב ביותר למיקום הביקור. עם זאת, פעולה כזו יוצרת מורכבויות נוספות שקשורות להגבלות של הימנעות מביצוע פניית פרסה. ברוב מיקומי הביקור, מספיק להגדיר רק אחד מהמאפיינים האלה כדי להימנע מפניות פרסה. - פתרונות מוזרקים: כשמשתמשים בפתרון למניעת פניית פרסה, תגובה מה-API כוללת את
injectedSolutionLocationTokenבתוךShipmentRoute.Visitשנוצר כדי לתעד את הצד של הכביש שנבחר. אם תעשו שימוש חוזר בביקור הזה כפתרון מוזרק בבקשה עתידית, תצטרכו להעביר את הטוקן הזה בחזרה ל-API.
מגבלות
הימנעות מפניות פרסה היא תכונה שפועלת כמיטב היכולת. יכול להיות שה-API עדיין יכלול פניות פרסה במסלול שנוצר, בתנאים הבאים:
- אמצעי התחבורה מוגדר למצב שאינו
DRIVING. - מיקומי ההגעה והיציאה של מיקום ביקור ספציפי שונים. במקרה כזה, ה-API מחזיר שגיאה.
- הביקור מתרחש ברחוב ללא מוצא, ולכן צריך לבצע פניית פרסה כדי לצאת ממנו.
- פניית הפרסה מתרחשת לאורך המסלול, ולא במיקום הביקור בפועל.
- התמרון הוא פנייה חדה מאוד לכביש אחר, שה-API לא מסווג כפניית פרסה.