הצגת מסלול מפורט לרכבים גדולים

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

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

מה תלמדו

במדריך הזה תלמדו איך:

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

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

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

הגדרת הפרויקט

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

יצירת טוקן מסלול

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

דרישות מינימליות

באפליקציה שלך צריך להשתמש בגרסה המינימלית הנדרשת של Navigation SDK:

  • Android: גרסה 5.2.0 ואילך
  • iOS: גרסה 5.4.0 ואילך

בנוסף, חלות כל הדרישות לשימוש ב-Navigation SDK:

מגבלות

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

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

הצגת ממשק משתמש שמתאים למשאיות

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

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

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

תהליך העבודה עם אסימון מסלול

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

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

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

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

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

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

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

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

האפליקציה מקבלת את המחרוזת routeToken משרת הקצה העורפי.

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

CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g

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

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

שימו לב: ל-Navigation SDK יש הגדרה TravelMode, שצריך להגדיר לה את הערך TravelMode.DRIVING. ההגדרה הזו שונה מההגדרה של travelMode ב-Routes API, שצריכה להיות TRUCK. ההגדרה של Routes API travelMode מקודדת ב-routeToken ומאותתת ל-Navigation SDK להציג את החוויה והמסלול הספציפיים למשאית.

Android

משתמשים ב-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)

iOS

מעבירים את אסימון המסלול אל 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: {...})

השלבים הבאים