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

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

מה כולל המדריך הזה: במדריך הזה מוסבר איך לקחת מסלול ספציפי למשאית שנוצר על ידי Routes API או Route Optimization API ולהשתמש בו כדי להפעיל סשן ניווט מפורט באמצעות Navigation SDK ל-Android.

מה תלמדו

תלמדו איך לבצע את המשימות הבאות:

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

דרישות מוקדמות

לפני שמתחילים, חשוב לוודא שהדרישות הבאות מתקיימות:

1. שליחת בקשה לגישה לפרויקט

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

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

אם בארגון שלכם משתמשים בפרויקטים נפרדים ב-Google Cloud עבור ממשקי ה-API של ניתוב ה-Backend ו-Navigation SDK לנייד, צריך לפנות אל Google כדי להקצות כל פרויקט.

2. הגדרת יצירת מסלולים בקצה העורפי וקבלת טוקן מסלול

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. בקשת מסלול: שרת הקצה העורפי שלכם מבקש מסלול למשאית מ-Routes API (או מ-Route Optimization API).
  2. קבלת אסימון: ה-Routing 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: הגדרת CustomRoutesOptions

מעבירים את טוקן המסלול למופע CustomRoutesOptions באמצעות CustomRoutesOptions.builder:

  • מעבירים את הטוקן באמצעות setRouteToken(routeToken).
  • מגדירים את אמצעי התחבורה באמצעות setTravelMode(CustomRoutesOptions.TravelMode.DRIVING).

שלב 3: הגדרת נקודות ציון והגדרת יעדים

עוברים דרך נקודות הדרך של היעד וCustomRoutesOptions אל navigator.setDestinations.

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

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

שלב 4: טיפול בסטטוס המסלול והתחלת ההנחיה

רישום של OnResultListener ב-ListenableResultFuture<Navigator.RouteStatus>. כשהסטטוס של המסלול הוא OK, מתקשרים אל navigator.startGuidance כדי להתחיל בניווט פעיל שלב אחר שלב.

קוד לדוגמה

משתמשים ב-CustomRoutesOptions.builder כדי להגדיר את האסימון ואז מעבירים אותו אל navigator.setDestinations.

// Obtain the routeToken string from your backend
val routeToken = "route token returned by Routes API"

val customRoutesOptions = CustomRoutesOptions.builder()
    .setRouteToken(routeToken)
    .setTravelMode(TravelMode.DRIVING)
    .build()

// Specify the same destination used to create the route token
ArrayList <Waypoint> destinations = Lists.newArrayList();
val destination = Waypoint.builder()
    .setLatLng(10.0, 20.0)
    .setTitle("title")
    .setVehicleStopover(true)
    .build()
destinations.add(destination);

navigator.setDestinations(destinations, customRoutesOptions)

מסכים שמובנים ברכב

אתם יכולים להקרין את סשן הניווט הגדול ברכב על מסכים בלוח המחוונים באמצעות ניווט ל-Android Auto.

השלבים הבאים

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