למי המדריך הזה מיועד: המדריך הזה מיועד למפתחים לנייד שאחראים על פיתוח חוויית הניווט המפורטת לנהגי משאיות, אוטובוסים או כלי רכב מסחריים גדולים אחרים.
מה נלמד במדריך הזה: איך לוקחים מסלול ספציפי למשאית שנוצר על ידי Routes API או Route Optimization API, ולהשתמש בו כדי להפעיל סשן ניווט מפורט באמצעות Navigation SDK ל-iOS.
מה תלמדו
כאן נסביר איך לבצע את המשימות הבאות:
- משתמשים ב-
routeTokenכדי לקשר בין תכנון המסלול בקצה העורפי לבין חוויית הניווט באפליקציה. - מגדירים את Navigation SDK כך שישתמש במסלול משאית שתוכנן מראש.
- להבין איך ההגבלות הספציפיות למשאיות מופיעות לנהג בממשק המשתמש של הניווט.
דרישות מוקדמות
לפני שמתחילים, צריך לוודא שאתם עומדים בדרישות הבאות:
1. בקשת גישה לפרויקט
התכונה "מסלולים לרכבים גדולים" זמינה לקבוצה מוגבלת של לקוחות. כדי להביע עניין ולבקש גישה לפרויקט בענן ב-Google Cloud, מלאו את הטופס ליצירת קשר. נציג Google ייצור איתכם קשר ויסביר מה השלבים הבאים.
אחרי ש-Google תיתן לכם גישה, ודאו שהפרויקט שלכם ב-Google Cloud מוגדר לתכנון מסלולים לרכבים גדולים.
אם בארגון שלכם משתמשים בפרויקטים נפרדים ב-Google Cloud לממשקי ה-API של הניתוב בקצה העורפי ול-Navigation SDK לנייד, אתם צריכים לפנות ל-Google כדי להקצות כל פרויקט.
2. הגדרת יצירת מסלול בקצה העורפי וקבלת טוקן מסלול
לפני שמתחילים את ה-Navigation במכשיר, שרת בק-אנד צריך ליצור מסלול למשאית ולקבל routeToken באמצעות אחד מממשקי ה-API הבאים:
- Routes API: מומלץ לחישוב מסלולים של משאית אחת בין נקודות מוצא ויעדים. הוראות להגדרה מפורטות במאמר יצירת מסלולים וזמני הגעה משוערים לרכבים גדולים.
- Route Optimization API: מומלץ לאופטימיזציה של מסלולים עם כמה עצירות בצי רכבים. מידע נוסף זמין במדריך של Route Optimization API בנושא תכנון מסלולים לכלי רכב גדולים.
בבקשה מה-backend צריך לציין את travelMode: TRUCK יחד עם המאפיינים הפיזיים של הרכב (גובה, רוחב, אורך, משקל, מספר סרנים ומטען של חומרים מסוכנים). ה-Routes API מחזיר routeToken בתגובה שלו, ושרת בק-אנד מעביר את התגובה לאפליקציה לנייד.
3. עמידה בדרישות המינימום של ה-SDK ושל המערכת
באפליקציה צריך להשתמש בגרסה המינימלית הנדרשת של Navigation SDK, 5.4.0 ואילך.בנוסף, הפרויקט צריך לעמוד בדרישות ההגדרה הרגילות של Navigation SDK.
מגבלות והנחיות תפעוליות
לפני שמתחילים, חשוב לשים לב למגבלות ולהנחיות התפעוליות הבאות:
- זמינות גיאוגרפית: תכנון מסלולים לרכבים גדולים זמין ב-48 המדינות הרציפות של ארה"ב (זמינות לכלל המשתמשים) וביפן (ניסיוני). הוא לא זמין באלסקה, בהוואי או בטריטוריות של ארה"ב.
- הנחיות לנהגים ובטיחות: הנהגים לא יכולים להסתמך רק על המסלולים שמוחזרים על ידי Navigation SDK כדי לוודא שהם בטוחים או חוקיים. יכול להיות שהמסלולים לא יתאימו לרכב בכל תנאי הדרך, ואם הנהגים יסעו בהם הם עלולים להיחשף לסכנות כמו גובה נמוך או כבישים עם הגבלת משקל. הנהגים חייבים תמיד להישאר ערניים ולציית לתמרורים ולתקנות המקומיות.
- מסלולים בשיטת Best-effort: כש-routing API לא מצליח למצוא מסלול שתואם באופן מלא להגבלות על הרכב, הוא מחזיר מסלול בשיטת Best-effort שעשוי עדיין לעבור בקטעים מוגבלים. לדוגמה, Routes API מגדיר את הדגל
routeRestrictionsPartiallyIgnoredבתשובה שלו. במהלך הניווט במסלולים האלה, ערכת ה-SDK לניווט מציגה הסברים על המסלול כדי להדגיש את ההגבלות הרלוונטיות. במקרים כאלה, חשוב לתכנן את המסלולים בקפידה ולא להסתמך רק על מסלול מסומן כמקור מידע יחיד לתכנון או לניווט. - תכונות שלא נתמכות: התכונה "מסלולים לרכבים גדולים" לא תומכת בתכונות הבאות:
- תמחור אגרה למשאיות
- מגבלות מהירות ספציפיות למשאיות או לרכבים כבדים
- מסלול לחומרים רדיואקטיביים מסוכנים
- מגבלות שימוש: בקשות שנשלחות ל-Navigation SDK כפופות למגבלות השימוש והמכסות הרגילות. מידע נוסף זמין במאמר שימוש וחיוב.
הצגת ממשק משתמש ספציפי למשאיות (הסברים על המסלול)
Navigation SDK מציג באופן אוטומטי אזהרות חזותיות, שנקראות הסברים במסלול, במפה כדי להתריע לנהגים על הגבלות קרובות על משאיות. הודעות מופיעות לגבי הגבלות שקיימות לאורך המסלול המתוכנן, אבל לא מופיעות בכבישים אחרים בקרבת מקום.
ה-Navigation SDK כולל הסברים על ההגבלות הבאות:
| הגבלה | סמל וטקסט של יתרונות מרכזיים | תנאים להצגה |
|---|---|---|
| גובה |
צהוב = אזהרה, הרכב קרוב לגובה המקסימלי המותר
אדום = הרכב גבוה מהגובה המקסימלי המותר |
התראה צהובה מופיעה כשגובה הרכב קרוב למגבלה.
אם המסלול לא תואם ומפר את הגבלת הגובה, מופיע הסבר קצר באדום.
|
| משקל |
|
אם משקל הרכב חורג מהמגבלה של הכביש, מופיע הסבר אדום.
|
| הגישה למשאיות אסורה |
|
הסבר קצר באדום מופיע כשנוסעים בקטע כביש עם הגבלה על משאיות מסחריות.
|
| סחורות מסוכנות |
|
הודעה אדומה מופיעה כשאסור לרכב עם מטען של חומרים מסוכנים לנסוע בקטע דרך מסוים.
|
איך פועלים אסימוני מסלול
routeToken הוא תמונת מצב מוצפנת של מסלול שנוצר על ידי הקצה העורפי של Google לניתוב. הוא כולל את הגיאומטריה של המסלול המתוכנן, וגם את המידות הפיזיות של הרכב ואת פרופיל ההגבלות.
תהליך העבודה כולל את השלבים הבאים:
- בקשת מסלול: שרת בק-אנד מבקש מסלול למשאית מ-Routes API (או מ-Route Optimization API).
- קבלת טוקן: ה-Routes API מחשב את המסלול התואם ומחזיר
routeTokenלשרת בק-אנד. - העברת הטוקן: שרת הבק-אנד מעביר את
routeTokenואת הקואורדינטות של היעד אל האפליקציה לנייד. - העברה ל-SDK: האפליקציה לנייד מעבירה את
routeTokenאל Navigation SDK. - התחלת ההנחיה: ה-Navigation SDK מטפל בכל ההיבטים של חוויית הניווט המפורט, כולל רינדור של הסברים במסלול וטיפול בשינוי מסלול דינמי בהתאם למגבלות של הרכב.
חישובים מחדש ושינוי מסלול באופן דינמי
במהלך ניווט פעיל, מצב התנועה, סגירת כבישים או פניות שפספסתם עלולים לגרום לרכב לסטות מהמסלול המתוכנן.
כשמתבצע שינוי מסלול:
- Navigation SDK מחשב מחדש באופן אוטומטי את המסלול ליעד.
- ה-SDK שומר את המאפיינים והמידות של הרכב שמקודדים ב-
routeTokenהמקורי. - המסלול החדש שחושב עוקף גשרים נמוכים, גשרים עם הגבלת משקל וכבישים שאסור למשאיות מסחריות לנסוע בהם.
הטמעה: התחלת נסיעה שמותאמת למשאית
כדי לאתחל ולהתחיל ניווט מפורט באמצעות אסימון מסלול לרכב גדול, פועלים לפי השלבים הבאים.
שלב 1: מקבלים את אסימון המסלול מה-backend
האפליקציה לנייד מקבלת את המחרוזת routeToken יחד עם הקואורדינטות של היעד משרת הבק-אנד. במאמרי העזרה של Routes API מוסבר איך יוצרים מסלולים וזמני הגעה משוערים לרכבים גדולים ואיך יוצרים את האסימון הזה בשרת.
הקוד הבא הוא אסימון מסלול לדוגמה:
{
"routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}
שלב 2: מעבירים את הטוקן ל-Navigator
מעבירים את נקודות הציון של routeToken והיעד ל-method mapView.navigator של setDestinations.
כשמגדירים נקודות ציון ומעבירים את הטוקן של המסלול, חשוב לזכור את הדברים הבאים:
- דרישה להתאמה של היעד: הקואורדינטות של היעד שמועברות אל
setDestinationsצריכות להתאים לקואורדינטות של היעד שמשמשות ליצירתrouteToken. אם תציינו יעד אחר, תופיע הודעת שגיאה. - מסלול לצד הכביש: רכבים מסחריים גדולים לא יכולים לבצע פניית פרסה בקלות ברחובות צרים. כדי לוודא שהמשאית תגיע ליעד בצד הנכון של הכביש, צריך להגדיר את
preferSameSideOfRoad = trueבנקודות הדרך. - עצירות ביניים של הרכב: כדי לכוון את המשאית למיקום מתאים לעצירה או לפריקה, מגדירים את
vehicleStopover = trueבנקודות הדרך. - נקודות ניווט: אם ליעד יש כניסה ייעודית למשא או רציף טעינה, ציינו זאת באמצעות אסימון של נקודת ניווט.
שלב 3: טיפול בסטטוס המסלול והתחלת ההנחיה
בודקים את הערך של GMSRouteStatus שמוחזר בקריאה החוזרת (callback) של setDestinations. כשהסטטוס הוא .OK (GMSRouteStatusOK), מגדירים את isGuidanceActive = true (guidanceActive = YES) כדי להתחיל הנחיה פעילה של מסלול מפורט.
קוד לדוגמה
מעבירים את אסימון המסלול ל-Navigation SDK באמצעות השיטה mapView.navigator
setDestinations, ומציינים את אותן נקודות ציון של היעד שבהן השתמשתם כשיצרתם את אסימון המסלול:
// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([destination], routeToken: routeToken, callback: {...})
מסכים ברכב
אתם יכולים להציג את סשן הניווט של הרכב הגדול במסכים בלוח המחוונים באמצעות ניווט ל-CarPlay.השלבים הבאים
- שינוי ממשק המשתמש של הניווט: התאמה אישית של רכיבים אינטראקטיביים מובנים בממשק המשתמש ורכיבים חזותיים, כמו המצפן, הלחצן "מרכוז מחדש" וזווית הצילום של המצלמה.
- האזנה לאירועי ניווט: טיפול בעדכוני ניווט ובאירועים במחזור החיים, כמו התקדמות במסלול, שינויים בזמן ההגעה המשוער ושינוי מסלול.