הפעלת פיד נתונים מפורט

פיד נתונים של מסלול מפורט מספק מידע ניווט בלבד למכשירים שלא מיועדים לפעול לפי הנחיות ניווט מבוססות-מפה. היא כוללת תמרונים עתידיים עם רכיבים שאתם מספקים:

  • סמלים (שמאלה, ימינה, סיבוב פרסה)
  • הופכים מספרים בכיכרות
  • שמות של כבישים
  • המרחקים המשוערים והזמן המשוער עד לשלב הבא בניווט או ליעד הסופי

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

רכיבי תצוגה חיוניים לניווט

מסך של נייד שבו מוצגת פנייה שמאלה קרובה במרחק 30 מטר אל שדרה W Ahvanee. בתחתית המסך, הזמן שנותר עד ליעד הוא 46 דקות ומרחק שנותר הוא 59 ק"מ.

השדות הראשיים בכל שלב ניווט הם שם הכביש המלא, אמצעי התמרון והמרחק הכולל של השלב, שזמינים ב-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