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

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

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

מה תלמדו

כאן נסביר איך לבצע את המשימות הבאות:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

כשמתבצע שינוי מסלול:

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

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

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

שלב 1: מקבלים את אסימון המסלול מה-backend

האפליקציה לנייד מקבלת את המחרוזת 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.

השלבים הבאים

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