פיד נתונים של מסלול מפורט מספק מידע על ניווט בלבד למכשירים שלא מיועדים להנחיות ניווט שמבוססות על מפות. הוא מספק את התמרונים הבאים עם הרכיבים שאתם מספקים:
- סמלים (שמאלה, ימינה, פניית פרסה)
- מספרי פניות בכיכרות
- שמות של כבישים
- המרחק והזמן המשוערים עד לשלב הבא בניווט או עד ליעד הסופי
אתם יכולים להשתמש בפיד המסלול המפורט כדי ליצור חוויות שבהן ממשק המשתמש המלא של Navigation SDK לא מתאים, למשל בתצוגות של מסכים קטנים. לדוגמה, אפשר להשתמש בזה לרוכבי רכב דו-גלגלי, ולהציג להם הנחיות ניווט בלבד כדי לעזור להם להגיע ליעדים שלהם מהר יותר ובביטחון רב יותר, עם מינימום הסחות דעת.
רכיבי תצוגה חיוניים לניווט
השדות הראשיים של כל שלב בניווט הם השם המלא של הכביש, התמרון והמרחק הכולל של השלב, שזמינים ב-GMSNavigationStepInfo.
בנסיעה כולה, יכול להיות שתרצו להציג את הזמן והמרחק שנותרו עד לשלב הנוכחי או עד ליעד. כל הנתונים האלה זמינים ב-GMSNavigationNavInfo.
בתמונה שמשמאל מוצגת דוגמה לרכיבי הניווט החיוניים האלה.
הגדרת רכיב event listener
כדי להשתמש בנתוני ניווט בלבד, צריך להטמיע רכיב event listener לאירוע didChangeNavInfo. בתוך רכיב ה-event listener, ניגשים למידע על הנסיעה ועל השלבים כדי לספק למשתמשים ניווט מפורט.
כדי להטמיע גורמים מטפלים באירועים, בקר התצוגה של המפה צריך להטמיע את הפרוטוקול GMSNavigatorListener. במאמר האזנה לאירועי ניווט מוסבר בפירוט איך מטפלים באירועים ב-Navigation SDK ל-iOS.
טיפול באירוע didChangeNavInfo
כדי להוסיף לאפליקציה תמיכה במסלול מפורט, צריך ליצור רכיב event listener לאירוע didChangeNavInfo. ברכיב ה-event listener, משתמשים במחלקות ובערכי ה-enum הבאים כדי לשלוט בניווט במסלול המפורט:
GMSNavigationNavInfo— מחלקה שמגדירה מידע על מצב הניווט.GMSNavigationStepInfo— מחלקה שמגדירה מידע על שלב אחד במסלול ניווט.
GMSNavigationNavState– מאפיין Enum שמגדיר את המצב הנוכחי של הניווט, למשל בדרך, חישוב מסלול מחדש או עצירה.GMSNavigationDrivingSide— מאפיין Enum שמגדיר אם השלב הזה הוא במסלול שבו נוהגים בצד ימין או במסלול שבו נוהגים בצד שמאל.GMSNavigationManeuver— Enum שמגדיר את פעולת הניווט שצריך לבצע, כמו פנייה שמאלה או פנייה ימינה.
בהמשך מוצגות דוגמאות לרכיבי event listener של האירוע didChangeNavInfo:
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 ... } } } }
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; ... } } ... }
מצבי ניווט
משתמשים במאפיין navState של GMSNavigationNavInfo כדי לקבל את המצב הנוכחי של הניווט, שהוא אחד מהבאים:
בדרך – המצב
GMSNavigationNavStateEnrouteמציין שהניווט המודרך פעיל והמשתמש נמצא במסלול שסופק. יש מידע על השלב הבא בתמרון.מחשב מסלול מחדש –
GMSNavigationNavStateReroutingפירושו שהניווט מתבצע, אבל המערכת מחפשת מסלול חדש. השלב הבא בתמרון לא זמין כי עדיין אין מסלול חדש.הניווט הופסק –
GMSNavigationNavStateStopped: הניווט הסתיים. לדוגמה, הניווט נפסק כשהמשתמש יוצא מהניווט באפליקציה. באפליקציה לדוגמה, מצבGMSNavigationNavStateStoppedמנקה את תצוגת פרטי הניווט כדי למנוע הצגה של הוראות לשלבים שנותרו.
הנחיה לבחירת נתיב
ערכת ה-Navigation SDK מייצגת נתיבים בכרטיס הפנייה בניווט כאובייקטים של נתונים מסוג GMSNavigationLane ו-GMSNavigationLaneDirection. אובייקט GMSNavigationLane מייצג נתיב ספציפי במהלך הניווט, ויש לו רשימה של אובייקטים מסוג GMSNavigationLaneDirection שמתארים את כל הפניות שאפשר לבצע מהנתיב הזה.
הכיוון המומלץ לנהג בנתיב מסומן באמצעות השדה recommended.

דוגמה להנחיה לבחירת נתיב
קטע הקוד הבא ממחיש את ייצוג הנתונים של הנתיבים שמוצגים בצילום המסך שלמעלה.
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
תמונות של הנחיה לבחירת נתיב
ערכת Navigation SDK תומכת ביצירת תמונות של נתיבים לכל שלב בניווט, כפי שמועבר על ידי GMSNavigationStepInfo. הסמלים האלה מתאימים להנחיות לגבי גודל התמונה ב-CarPlay.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
יצירת סמלים לתמרונים
![]()
ה-enum GMSNavigationManeuver מגדיר כל תמרון אפשרי שיכול להתרחש במהלך הניווט, ואפשר לקבל את התמרון לשלב נתון מהמאפיין maneuver של GMSNavigationStepInfo.
אתם צריכים ליצור סמלי תמרונים ולהתאים אותם לתמרונים המשויכים אליהם.
בחלק מהתמרונים, אפשר להגדיר מיפוי של אחד לאחד לסמל, כמו GMSNavigationManeuverDestinationLeft ו-GMSNavigationManeuverDestinationRight. עם זאת, מכיוון שלחלק מהתמרונים יש מאפיינים משותפים עם תמרונים אחרים, יכול להיות שתרצו למפות יותר מתמרון אחד לסמל יחיד. לדוגמה, אפשר למפות את GMSNavigationManeuverTurnLeft ו-GMSNavigationManeuverOnRampLeft לסמל של פנייה שמאלה.
חלק מהתמרונים כוללים תווית נוספת, "עם כיוון השעון" או "נגד כיוון השעון", שה-SDK קובע על סמך צד הנהיגה במדינה. לדוגמה, במדינות שבהן נוהגים בצד שמאל של הכביש, הנהגים נכנסים לכיכר או מבצעים פניית פרסה בכיוון השעון, ואילו במדינות שבהן נוהגים בצד ימין של הכביש, הנהגים נכנסים לכיכר או מבצעים פניית פרסה נגד כיוון השעון. Navigation SDK מזהה אם התמרון מתרחש בתנועה בצד שמאל או בצד ימין, ומוציא את התמרון המתאים. לכן, סמל התמרון עשוי להיות שונה לתמרון בכיוון השעון לעומת תמרון נגד כיוון השעון.
הרחבה כדי לראות סמלים לדוגמה של תמרונים שונים
| סמל לדוגמה | תמרונים במסלול מפורט |
|---|---|
![]() |
DEPARTUNKNOWN |
![]() |
STRAIGHTON_RAMP_UNSPECIFIEDOFF_RAMP_UNSPECIFIEDNAME_CHANGE
|
![]() |
TURN_RIGHTON_RAMP_RIGHT
|
![]() |
TURN_LEFTON_RAMP_LEFT
|
![]() |
TURN_SLIGHT_RIGHTON_RAMP_SLIGHT_RIGHTOFF_RAMP_SLIGHT_RIGHT
|
![]() |
TURN_SLIGHT_LEFTON_RAMP_SLIGHT_LEFTOFF_RAMP_SLIGHT_LEFT
|
![]() |
TURN_SHARP_RIGHTON_RAMP_SHARP_RIGHTOFF_RAMP_SHARP_RIGHT
|
![]() |
TURN_SHARP_LEFTON_RAMP_SHARP_LEFTOFF_RAMP_SHARP_LEFT
|
![]() |
TURN_U_TURN_COUNTERCLOCKWISEON_RAMP_U_TURN_COUNTERCLOCKWISEOFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
![]() |
TURN_U_TURN_CLOCKWISEON_RAMP_U_TURN_CLOCKWISEOFF_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_RIGHTOFF_RAMP_RIGHT
|
![]() |
MERGE_LEFTOFF_RAMP_LEFT
|
![]() |
FORK_RIGHTTURN_KEEP_RIGHTON_RAMP_KEEP_RIGHTOFF_RAMP_KEEP_RIGHT
|
![]() |
FORK_LEFTTURN_KEEP_LEFTON_RAMP_KEEP_LEFTOFF_RAMP_KEEP_LEFT
|
![]() |
MERGE_UNSPECIFIED
|
![]() |
DESTINATION
|
![]() |
DESTINATION_RIGHT
|
![]() |
DESTINATION_LEFT
|
![]() |
FERRY_BOAT
|
![]() |
FERRY_TRAIN
|
איך משתמשים בסמלים שנוצרו על ידי AI
Navigation SDK תומך ביצירת סמלים של תמרונים ל-GMSNavigationStepInfo נתון. הסמלים האלה מתאימים להנחיות לגבי גודל התמונה ב-CarPlay.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];







































