למי המדריך הזה מיועד: המדריך הזה מיועד למפתחים לנייד שאחראים על פיתוח חוויית הניווט המפורטת לנהגי משאיות, אוטובוסים או כלי רכב מסחריים גדולים אחרים.
מה נלמד במדריך הזה: איך לוקחים מסלול ספציפי למשאית שנוצר באמצעות 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 כדי לוודא שהם בטוחים או חוקיים. יכול להיות שהמסלולים לא יתאימו לרכב בכל תנאי הדרך, ואם הנהגים ייסעו בהם הם עלולים להיחשף לסכנות כמו גובה נמוך או כבישים עם הגבלת משקל. הנהגים חייבים תמיד להישאר ערניים ולציית לתמרורים ולתקנות המקומיות.
- מסלולים שמתאימים ככל האפשר: אם ה-Routes API לא מוצא מסלול שתואם באופן מלא להגבלות הרכב, הוא מחזיר מסלול שמתאים ככל האפשר, אבל יכול להיות שהוא עדיין יעבור בקטעים מוגבלים. לדוגמה, ה-Routes API מגדיר את הדגל
routeRestrictionsPartiallyIgnoredבתגובה שלו. במהלך הניווט במסלולים האלה, ה-Navigation 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: הגדרת יעדים באמצעות אסימון המסלול
מעבירים את routeToken ל-mapView.navigator
setDestinationsWithToken:completionHandler:. Navigation SDK מקבל את היעדים מהאסימון של המסלול, יחד עם פרופיל הניתוב של TRUCK שמנחה אותו להחיל מגבלות על רכבים גדולים.
אתם לא צריכים לעבור דרך נקודות ציון. מצב הנסיעה של האפליקציה חייב להיות .driving (GMSNavigationTravelModeDriving), שהוא ברירת המחדל, או .twoWheeler (GMSNavigationTravelModeTwoWheeler).
מגדירים את אפשרויות נקודות הדרך בבקשה ל-Routes API שיוצרת את אסימון המסלול. Navigation SDK מקבל אותם מהאסימון, יחד עם היעדים. אם יש לכם רכב גדול, כדאי לשקול את האפשרויות הבאות:
- מסלול לצד הכביש: רכבים מסחריים גדולים לא יכולים לבצע פניית פרסה בקלות ברחובות צרים. כדי לוודא שהמשאית תגיע ליעד בצד הנכון של הכביש, מגדירים את
sideOfRoadל-trueבנקודת הציון של היעד. - עצירות ביניים של הרכב: כדי להנחות את המשאית למיקום מתאים לעצירה או לפריקה, מגדירים את
vehicleStopoverל-trueבנקודת הציון של היעד. - נקודות ניווט: אם ליעד יש כניסה ייעודית למשא או רציף טעינה, ציינו זאת באמצעות אסימון של נקודת ניווט.
שלב 3: טיפול בסטטוס המסלול והתחלת ההנחיה
כשה-Navigation SDK מסיים לחשב את המסלול, הוא מעביר GMSNavigationRouteDescription ל-completion handler. כשהערך של routeStatus הוא .OK (GMSRouteStatusOK), מגדירים את isGuidanceActive = true (guidanceActive = YES) כדי להתחיל את ההנחיה הפעילה במסלול המפורט.
כדי לוודא ש-Navigation SDK החיל את טוקן המסלול, עיינו בקטע בדיקה אם Navigation SDK החיל את טוקן המסלול.
קוד לדוגמה
מעבירים את טוקן המסלול אל setDestinationsWithToken:completionHandler:, ואז מתחילים את ההנחיה כשהסטטוס של המסלול הוא .OK.
// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinationsWithToken(routeToken) { [weak self] routeDescription, error in
if routeDescription?.routeStatus == .OK {
self?.mapView.navigator?.isGuidanceActive = true
}
}
מסכים ברכב
אתם יכולים להציג את סשן הניווט של הרכב הגדול במסכים בלוח המחוונים באמצעות ניווט ל-CarPlay.השלבים הבאים
- שינוי ממשק המשתמש של הניווט: התאמה אישית של רכיבים אינטראקטיביים מובנים בממשק המשתמש ורכיבים חזותיים, כמו המצפן, לחצן המרכוז וזווית הצילום של המצלמה.
- האזנה לאירועי ניווט: טיפול בעדכוני ניווט ובאירועים במחזור החיים, כמו התקדמות במסלול, שינויים בזמן ההגעה המשוער ושינויי מסלול.