למי מיועד המדריך הזה: המדריך הזה מיועד למפתחי אפליקציות לנייד שאחראים ליצירת חוויית הניווט בתוך תא הנהג של משאיות או כלי רכב גדולים אחרים.
מה כולל המדריך הזה: במדריך הזה מוסבר איך לקחת מסלול ספציפי למשאית, שנוצר על ידי 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.
תהליך העבודה כולל את השלבים הבאים:
- הבקשות של ה-Backend מופנות אל Routes API כדי לקבל מסלול למשאית.
- Routes API מחזיר
routeToken. - הקצה העורפי שולח את הטוקן הזה אל האפליקציה לנייד.
- האפליקציה לנייד מעבירה את
routeTokenאל Navigation SDK כדי להתחיל את הנסיעה. - 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: {...})
השלבים הבאים
- כדאי לעיין בערכות ה-SDK הבאות: Navigation SDK ל-Android | Navigation SDK ל-iOS
- התאמה אישית של ממשק המשתמש: מידע נוסף על התאמה אישית של ממשק המשתמש של Navigation SDK