פיד נתונים של מסלול מפורט מספק מידע ניווט בלבד למכשירים שלא מיועדים לפעול לפי הנחיות ניווט מבוססות-מפה. היא כוללת תמרונים עתידיים עם רכיבים שאתם מספקים:
- סמלים (שמאלה, ימינה, סיבוב פרסה)
- הופכים מספרים בכיכרות
- שמות של כבישים
- המרחקים המשוערים והזמן המשוער עד לשלב הבא בניווט או ליעד הסופי
אפשר להשתמש בפיד המפורט כדי ליצור חוויות שבהן ממשק המשתמש המלא של ה-SDK של הניווט לא מתאים, למשל במסכים קטנים. לדוגמה, תוכלו להשתמש בהגדרה הזו לנוסעים בכלי רכב דו-גלגלי, שבה תוכלו להקרין הדרכה לניווט בלבד כדי לעזור להם להגיע ליעדים שלהם מהר יותר ובביטחון רב יותר, עם כמה שפחות הסחות דעת.
רכיבי תצוגה חיוניים לניווט
השדות הראשיים בכל שלב ניווט הם שם הכביש המלא, אמצעי התמרון והמרחק הכולל של השלב, שזמינים ב-GMSNavigationStepInfo.
לגבי הנסיעה הכוללת, כדאי להציג את הזמן שנותר ואת המרחק מהשלב הנוכחי או ליעד, וכולם זמינים ב-GMSNavigationNavInfo. בתמונה שמימין מוצגת דוגמה לרכיבי הניווט החיוניים האלה.
הגדרת event listener
כדי להשתמש בנתוני ניווט בלבד, צריך להטמיע event listener לאירוע didChangeNavInfo
. בתוך event listener, אפשר לגשת לפרטי הנסיעה
והשלבים כדי לספק למשתמשים ניווט לפי מסלול מפורט.
כדי להטמיע גורמים מטפלים באירועים, הבקר של הצגת המפה חייב להטמיע את הפרוטוקול GMSNavigatorListener
. למידע מפורט על טיפול באירועים ב-Navigation SDK ל-iOS, ראו האזנה לאירועי ניווט.
טיפול באירוע didChangeNavInfo
צור מאזין לאירוע didChangeNavInfo
על מנת להוסיף לאפליקציה תמיכה במסלול מפורט. ב-event listener, השתמש במחלקות ובטיפוסים הבאים על מנת לשלוט בניווט המפורט:
GMSNavigationNavInfo – מידע מגדיר מחלקה על מצב הניווט.
GMSNavigationStepInfo – מחלקה שמגדירה מידע על שלב יחיד לאורך מסלול הניווט.
GMSNavigationNavState – Enum שמגדיר את המצב הנוכחי של הניווט, כמו בדרך, שינוי מסלול או עצירה.
GMSNavigationDrivingSide: – Enum שמגדיר אם השלב הזה הוא במסלול נסיעה מימין או בדוח 'נסיעה בצד שמאל'.
GMSNavigationManeuver — Enum מגדיר את פעולת הניווט שצריך לבצע, למשל פנייה שמאלה או פנייה ימינה.
למטה מוצגות דוגמאות של פונקציות event listener לאירוע didChangeNavInfo
:
Objective-C
// ViewController.h @interface SomeViewController () <GMSNavigatorListener> @end // ViewController.m @implementation SomeViewController // Some initialization code. ... { ... [_mapView.navigator addListener:self]; ... } #pragma mark GMSNavigatorListener - (void)navigator:(GMSNavigator *)navigator didUpdateNavInfo:(GMSNavigationNavInfo *)navInfo { // Get the current step information if (navInfo.navState == GMSNavigationNavStateEnroute) { GMSNavigationStepInfo *currentStep = navInfo.currentStep; if (currentStep) { ... roadNameLabel.text = currentStep.simpleRoadName; ... } } ... }
Swift
// ViewController.swift class SomeViewController: UIViewController { ... mapView.navigator?.add(self); ... } extension SomeViewController: GMSNavigatorListener { func navigator(_ navigator: GMSNavigator, didUpdateNavInfo navInfo: GMSNavigationNavInfo) { // Get the current step information if navInfo.navState == .enroute { if let currentStep = navInfo.currentStep { ... roadNameLabel.text = currentStep.simpleRoadName ... } } } }
מצבי ניווט
השתמשו במאפיין navState
של GMSNavigationNavInfo על מנת לקבל את מצב הניווט הנוכחי, שהוא אחד מהבאים:
Enroute – המצב
GMSNavigationNavStateEnroute
מציין שהניווט המודרך פעיל כרגע והמשתמש נמצא במסלול שצוין. יש מידע על השלב הנוכחי בתמרון.ניתוב מחדש –
GMSNavigationNavStateRerouting
המשמעות היא שהניווט מתבצע אבל הניווט מחפש מסלול חדש. שלב התמרון הקרוב לא זמין, כי עדיין אין מסלול חדש.נעצר –
GMSNavigationNavStateStopped
המשמעות היא שהניווט הסתיים. לדוגמה, הניווט מפסיק כשהמשתמש יוצא מהניווט באפליקציה. באפליקציה לדוגמה, מצבGMSNavigationNavStateStopped
מנקה את תצוגת פרטי הניווט כדי שלא יוצגו הוראות לשלבים קצרים.
יצירת סמלים לפעולות שונות
התו GMSNavigationManeuver מגדיר כל תמרון אפשרי שיכול להתרחש בזמן הניווט, ואפשר לקבל את התמרון עבור שלב נתון מהמאפיין maneuver
של GMSNavigationStepInfo.
עליכם ליצור סמלי תמרון ולהתאים אותם לתמרונים שמשויכים אליהם.
בתמרונים מסוימים אפשר להגדיר מיפוי אחד לאחד לסמל, כמו GMSNavigationManeuverDestinationLeft
ו-GMSNavigationManeuverDestinationRight
.
עם זאת, מכיוון שלתמרונים מסוימים יש מאפיינים משותפים עם אמצעים אחרים, כדאי למפות יותר מתמרון אחד לסמל אחד. לדוגמה, GMSNavigationManeuverTurnLeft
וגם GMSNavigationManeuverOnRampLeft
יכולים למפות לסמל הפנייה שמאלה.
חלק מהתמרונים כוללים תווית נוספת 'בכיוון השעון' או 'בכיוון השעון', שאותה מערכת ה-SDK קובעת על סמך הצד הנהיגה במדינה. לדוגמה, במדינות שבהן הנסיעה היא בצד שמאל של הכביש, נהגים פונים לכיכר או לבצע פניית פרסה בכיוון השעון, בעוד שהמדינות שנמצאות בצד ימין של הכביש נוטות לכיוון השעון. SDK הניווט מזהה אם תמרון מתרחש בתנועה משמאל או בצד ימין, ומפיק את הפלט של התמרון המתאים. לכן, ייתכן שסמל התמרון שלך יהיה שונה עבור תמרון בכיוון השעון לעומת תמרון נגד כיוון השעון.
אפשר להרחיב כדי לראות דוגמאות לסמלים שונים לתמרונים שונים
סמל לדוגמה | תמרון מסלול מפורט |
---|---|
DEPART UNKNOWN |
|
STRAIGHT ON_RAMP_UNSPECIFIED OFF_RAMP_UNSPECIFIED NAME_CHANGE
|
|
TURN_RIGHT ON_RAMP_RIGHT
|
|
TURN_LEFT ON_RAMP_LEFT
|
|
TURN_SLIGHT_RIGHT ON_RAMP_SLIGHT_RIGHT OFF_RAMP_SLIGHT_RIGHT
|
|
TURN_SLIGHT_LEFT ON_RAMP_SLIGHT_LEFT OFF_RAMP_SLIGHT_LEFT
|
|
TURN_SHARP_RIGHT ON_RAMP_SHARP_RIGHT OFF_RAMP_SHARP_RIGHT
|
|
TURN_SHARP_LEFT ON_RAMP_SHARP_LEFT OFF_RAMP_SHARP_LEFT
|
|
TURN_U_TURN_COUNTERCLOCKWISE ON_RAMP_U_TURN_COUNTERCLOCKWISE OFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
|
TURN_U_TURN_CLOCKWISE ON_RAMP_U_TURN_CLOCKWISE OFF_RAMP_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
|
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
|
ROUNDABOUT_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_CLOCKWISE
|
|
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_EXIT_CLOCKWISE
|
|
MERGE_RIGHT OFF_RAMP_RIGHT
|
|
MERGE_LEFT OFF_RAMP_LEFT
|
|
FORK_RIGHT TURN_KEEP_RIGHT ON_RAMP_KEEP_RIGHT OFF_RAMP_KEEP_RIGHT
|
|
FORK_LEFT TURN_KEEP_LEFT ON_RAMP_KEEP_LEFT OFF_RAMP_KEEP_LEFT
|
|
MERGE_UNSPECIFIED
|
|
DESTINATION
|
|
DESTINATION_RIGHT
|
|
DESTINATION_LEFT
|
|
FERRY_BOAT
|
|
FERRY_TRAIN
|