ניווט במסלולים לכלי רכב גדולים

למי מיועד המדריך הזה: המדריך הזה מיועד למפתחי אפליקציות לנייד שאחראים ליצירת חוויית ניווט מפורטת לנהגים של משאיות, אוטובוסים או רכבים מסחריים גדולים אחרים.

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

לפני שמתחילים בניווט במכשיר, שרת הקצה העורפי צריך ליצור מסלול למשאית ולקבל routeToken באמצעות אחד מממשקי ה-API הבאים:

בבקשת ה-Backend צריך לציין את travelMode: TRUCK יחד עם המאפיינים הפיזיים של הרכב (גובה, רוחב, אורך, משקל, מספר הסרנים ומטען חומרים מסוכנים). ה-API של הניתוב מחזיר routeToken בתגובה שלו, והשרת העורפי מעביר את התגובה לאפליקציה לנייד.

3. עמידה בדרישות המינימום של ה-SDK ושל המערכת

באפליקציה צריך להשתמש בגרסה המינימלית הנדרשת של Navigation SDK‏ 5.4.0 ואילך.

בנוסף, הפרויקט שלכם צריך לעמוד בדרישות ההגדרה הרגילות של Navigation SDK.

הגבלות והנחיות תפעוליות

לפני שמתחילים, חשוב לשים לב למגבלות ולהנחיות התפעוליות הבאות:

  • זמינות גיאוגרפית: ניתוב של כלי רכב גדולים זמין ב-48 המדינות הרציפות בארצות הברית (זמינות כללית) וביפן (בשלב ניסיוני). השירות לא זמין באלסקה, בהוואי ובטריטוריות של ארה"ב.
  • המלצות לנהגים ובטיחות: הנהגים לא יכולים להסתמך רק על המסלולים שמוחזרים על ידי Navigation SDK כדי להבטיח בטיחות או עמידה בדרישות החוק. יכול להיות שהמסלולים לא יתאימו לרכב בכל תנאי הדרך, ושימוש בהם עלול לחשוף את הנהגים לסכנות כמו גובה נמוך או כבישים עם הגבלת משקל. הנהגים צריכים תמיד להיות ערניים ולציית לתמרורים ולתקנות המקומיות.
  • מסלולים עם ניסיון להשגת התוצאה הטובה ביותר: אם ה-API של ניתוב לא מצליח למצוא מסלול שעומד באופן מלא בהגבלות על כלי רכב, הוא מחזיר מסלול עם ניסיון להשגת התוצאה הטובה ביותר, שיכול להיות שהוא עדיין עובר דרך קטעים מוגבלים. לדוגמה, Routes API מגדיר את הדגל routeRestrictionsPartiallyIgnored בתגובה שלו. במהלך הניווט במסלולים האלה, Navigation SDK מציג הסברים על המסלול כדי להדגיש את ההגבלות הרלוונטיות. במקרים כאלה, חשוב לתכנן את המסלולים בקפידה ולא להשתמש במסלול שסומן כמקור מידע יחיד לתכנון או לניווט.
  • תכונות שלא נתמכות: התכונות הבאות לא נתמכות בניווט לרכבים גדולים:
    • תמחור של אגרות למשאיות
    • מגבלות מהירות ספציפיות למשאיות או לרכבים כבדים
    • ניתוב של חומרים מסוכנים רדיואקטיביים
  • מגבלות שימוש: הבקשות שנשלחות אל Navigation SDK כפופות למגבלות השימוש והמכסות הרגילות. מידע נוסף זמין במאמר שימוש וחיוב.

הצגת ממשק משתמש ספציפי למשאיות (הערות לגבי מסלולים)

‫Navigation SDK מציג במפה באופן אוטומטי אזהרות חזותיות שנקראות הערות לגבי המסלול, כדי להזהיר נהגים מפני הגבלות על משאיות בהמשך הדרך. ההודעות מופיעות לגבי מגבלות שחלות לאורך המסלול המתוכנן, אבל לא מוצגות בכבישים אחרים בקרבת מקום.

‫Navigation SDK כולל הערות לגבי ההגבלות הבאות:

הגבלה סמל וטקסט של יתרונות מרכזיים תנאים להצגה
גובה סמל צהוב של הגבלת גובה
צהוב = אזהרה, הרכב קרוב לגובה המקסימלי המותר
סמל אדום של הגבלת גובה
אדום = הרכב גבוה מהגובה המקסימלי המותר
כשגובה הרכב קרוב להגבלה, מופיע בועית הסבר צהובה.
מפה שמוצגת בה אזהרה על הגבלת גובה
אם המסלול לא עומד בדרישות ומפר הגבלת גובה, מופיע תג אדום.
מפה שבה מוצגת הפרה של הגבלת גובה
משקל סמל הגבלת משקל הערה אדומה מופיעה כשהמשקל של הרכב חורג מהמגבלה של הכביש.
מפה שמוצג בה סמל של הגבלת משקל
הכניסה למשאיות אסורה סמל של משאיות שאסורות כשנוסעים בקטע כביש עם הגבלה על משאיות מסחריות, מופיע בועית אדומה.
מפה שמוצג בה סמל של איסור כניסה למשאיות
סחורות מסוכנות סמל של חומרים מסוכנים הודעה אדומה מופיעה כשקטע דרך מסוים אסור למעבר של כלי רכב עם מטען חומרים מסוכנים.
מפה שמוצג בה סמל של חומרים מסוכנים

איך אסימוני מסלול פועלים

routeToken הוא תמונת מצב מוצפנת של מסלול שנוצרת על ידי קצה העורפי של Google לניתוב. הוא כולל את הגיאומטריה של המסלול המתוכנן, וגם את המידות הפיזיות של הרכב ואת פרופיל ההגבלות שלו.

תהליך העבודה כולל את השלבים הבאים:

  1. בקשת מסלול: השרת העורפי שלכם מבקש מסלול למשאית מ-Routes API (או מ-Route Optimization API).
  2. קבלת אסימון: ה-API לניתוב מחשב את המסלול התואם ומחזיר routeToken לשרת העורפי שלכם.
  3. העברת טוקן: שרת הבק-אנד מעביר את routeToken ואת קואורדינטות היעד אל האפליקציה לנייד.
  4. העברה אל ה-SDK: האפליקציה לנייד מעבירה את routeToken אל Navigation SDK.
  5. התחלת הניווט: ה-Navigation SDK מטפל בכל ההיבטים של חוויית הניווט המפורט, כולל הצגת הערות לגבי המסלול וטיפול בהפניה דינמית למסלול חלופי בהתאם להגבלות של הרכב.

חישובים מחדש וניתוב מחדש באופן דינמי

במהלך ניווט פעיל, מצב התנועה, סגירות כבישים או פניות שהוחמצו עלולים לגרום לרכב לסטות מהמסלול המתוכנן.

כשמתבצעת הפניה אוטומטית:

  • ‫Navigation SDK מחשב מחדש באופן אוטומטי את המסלול ליעד.
  • ה-SDK שומר את מאפייני הרכב והמימדים שלו שמוצפנים ב-routeToken המקורי.
  • המסלול החדש שחושב מחדש לא כולל גשרים עם הגבלות גובה או משקל, וכבישים שאסורים למשאיות מסחריות.

הטמעה: התחלת נסיעה ספציפית למשאית

כדי לאתחל ולהתחיל בניווט מפורט עם אסימון מסלול לרכב גדול, פועלים לפי השלבים הבאים.

שלב 1: מקבלים את אסימון המסלול מהקצה העורפי

האפליקציה לנייד מקבלת את המחרוזת routeToken יחד עם קואורדינטות היעד משרת הבק-אנד. במאמר יצירת מסלולים גדולים לרכבים והערכות זמן הגעה במאמרי העזרה של Routes API מוסבר איך ליצור את האסימון הזה בשרת.

הקוד הבא הוא דוגמה לאסימון של מסלול:

{
  "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}

שלב 2: מעבירים את הטוקן אל Navigator

מעבירים את נקודות הדרך routeToken ואת היעד אל השיטה mapView.navigator setDestinations.

כשמגדירים נקודות ציון ומעבירים את אסימון המסלול, חשוב לזכור את הנקודות הבאות:

  • דרישה להתאמת היעד: קואורדינטות היעד שמועברות אל setDestinations צריכות להיות זהות לקואורדינטות היעד שנעשה בהן שימוש כשיוצרים את routeToken. ציון יעד אחר גורם לשגיאה.
  • ניתוב בצד הדרך: רכבים מסחריים גדולים לא יכולים לבצע בקלות פניות פרסה ברחובות צרים. כדי לוודא שהמשאית מתקרבת ליעד בצד הנכון של הכביש, מגדירים את preferSameSideOfRoad = true בנקודות הציון.
  • עצירות ביניים לרכב: כדי להנחות את המשאית למיקום מתאים לעצירה או לפריקה, מגדירים את vehicleStopover = true בנקודות הדרך.
  • נקודות ניווט: אם ליעד יש כניסה ייעודית למשאית או רציף טעינה, צריך לציין אותם באמצעות אסימון של נקודת ניווט.

שלב 3: טיפול בסטטוס המסלול והתחלת הניווט המודרך

מעריכים את הערך GMSRouteStatus שמוחזר בקריאה החוזרת 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.

השלבים הבאים

  • שינוי ממשק המשתמש של הניווט: אפשר להתאים אישית את אמצעי הבקרה המובנים בממשק המשתמש ואת הרכיבים החזותיים, כמו המצפן, הלחצן למרכוז מחדש ופרספקטיבת המצלמה.
  • האזנה לאירועי ניווט: טיפול בעדכוני ניווט ובאירועי מחזור חיים, כמו התקדמות במסלול, שינויים בזמן ההגעה המשוער ושינויים במסלול.