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

אפשר לשלוט בהצגת ההתרעות על שיבושים במסלולים באמצעות shouldDisplayPrompts
, שמאפשרת גם להציג התראות אוטומטיות כשמשתמש מתקרב לשיבוש.
mapView.navigator.shouldDisplayPrompts = true
הצגת פרטי השיבושים כשמשתמש מקייש על הסטטוס
המשתמשים יכולים להקיש על ההודעה כדי להציג כרטיס מידע עם מידע נוסף על השיבוש, כולל סוג השיבוש, השעה שבה דווח עליו בפעם האחרונה, ובמקרים מסוימים אפשרות להצביע אם השיבוש עדיין קיים. יש שני סוגים שונים של כרטיסי מידע שעשויים להופיע, בהתאם לכך שהמשתמש נמצא בניווט פעיל, ואפשרויות ההגדרה משתנות בהתאם לכל סוג.
כרטיסי מידע בסקירות הכלליות של המסלולים, לפני שמתחילים בניווט פעיל
כשמשתמש מקשיב על הודעה בסקירה הכללית של המסלול, לפני שהוא מתחיל ניווט פעיל, מופיע כרטיס מידע עם מידע נוסף על השיבוש.

אתם יכולים לקבוע אם המשתמשים יוכלו להקיש על התראות על שיבושים בתצוגה הכללית של המסלולים כדי להציג מידע נוסף. לשם כך, משתמשים בshowsIncidentCards
.
mapView.settings.showsIncidentCards = true
כרטיסי מידע במהלך ניווט פעיל
כשהודעה על שיבוש מופיעה במסלול במהלך ניווט פעיל, המשתמשים יכולים להקיש על ההודעה כדי להציג כרטיס מידע עם מידע נוסף על השיבוש, כולל סוג השיבוש והשעה שבה הוא דווח לאחרונה, וגם לחצנים להצבעה על כך שהשיבוש עדיין קיים. Google מעבדת את ההצבעות שנשלחות על ידי משתמשים, ויכול להיות שהן יוצגו במפה למשתמשים אחרים במפות Google ולמשתמשים ב-Navigation SDK. בנוסף, הן משמשות לקביעת ההחלטה אם להמשיך להציג את השיבוש.

אתם יכולים לקבוע אם ההתראות על הפרעות בדרך יוצגו במהלך הניווט הפעיל, ואם תוכלו להקיש עליהן. לשם כך, מקישים על shouldDisplayPrompts
. הלחצן הזה קובע גם אם ההתראות יוצגו לאורך המסלולים ואם יוצגו התראות אוטומטיות כשהמשתמש מתקרב להפרעה.
mapView.navigator.shouldDisplayPrompts = true
התראות אוטומטיות על שיבושים עם אפשרות להצבעה במהלך ניווט פעיל
במהלך ניווט פעיל, כשמשתמש מתקרב להפרעה במסלול, מופיעה בקשה עם מידע על ההפרעה ולחצנים להצבעה על כך שההפרעה עדיין קיימת. Google מעבדת את ההצבעות שנשלחות על ידי משתמשים, ויכול להיות שהן יוצגו במפה למשתמשים אחרים ב-Google Maps וב-Navigation SDK. בנוסף, הן ישמשו להחלטה אם להמשיך להציג את השיבוש.

אפשר להגדיר את הצגת ההתראות במהלך ניווט פעיל באמצעות shouldDisplayPrompts
. הלחצן הזה קובע גם אם יוצגו הודעות על מסלולים.
mapView.navigator.shouldDisplayPrompts = true
דיווח על שיבושים במהלך ניווט פעיל
במהלך מצב ניווט פעיל, מופיע לחצן בממשק המשתמש של הניווט שמאפשר למשתמשים לדווח על שיבושים חדשים במסלול. כשמשתמש מקשיק על הלחצן, מופיע תפריט עם סוגי ההפרעות שאפשר לדווח עליהן. Google מעבדת את הדיווחים שהמשתמשים שולחים, ויכול להיות שהם יוצגו במפה למשתמשים אחרים ב-Google Maps וב-Navigation SDK.


אפשר להגדיר את ההצגה של לחצן הדיווח במהלך ניווט פעיל באמצעות navigationReportIncidentButtonEnabled
.
// Enables the incident reporting FAB to show in situations where incident // reporting is possible. mapView.settings.navigationReportIncidentButtonEnabled = true
עבודה עם ממשקי משתמש מותאמים אישית של ניווט
אם ההטמעה של Navigation SDK כוללת רכיבי ממשק משתמש מותאמים אישית, צריך להביא בחשבון את רכיבי ההפרעה בזמן אמת כדי למנוע התנגשויות.
מיקום הלחצן לדיווח
כברירת מחדל, הלחצן לדיווח על שיבושים ממוקם בפינה התחתונה של המפה – בצד שמאל בשפות הנכתבות משמאל לימין ובצד ימין בשפות הנכתבות מימין לשמאל. אם צריך להזיז את לחצן הדיווח כדי לפנות מקום לרכיבי ממשק משתמש בהתאמה אישית, משתמשים ב-bottomTrailingButtonsLayoutGuide
.
Swift
// Create a new layout guide let topRightLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current reporting button is of fixed height topRightLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 50).isActive = true topRightLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -14).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide // Create an alternate layout guide to use when the header and the footer are not full width let topRightAlternateLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightAlternateLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height topRightAlternateLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 20).isActive = true topRightAlternateLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide
Objective-C
// Create a new layout guide UILayoutGuide *topRightLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide; // Create an alternate layout guide to use when the header and the footer are not full width UILayoutGuide *topRightAlternateLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightAlternateLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightAlternateLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightAlternateLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide;
Prompt Visibility API (ניסיוני)
באמצעות Prompt Visibility API תוכלו להימנע מהתנגשויות בין רכיבי ממשק משתמש שנוצרו על ידי Navigation SDK לבין רכיבי ממשק משתמש מותאמים אישית משלכם. לשם כך, מוסיפים מאזין שיקבל קריאה חוזרת לפני שרכיב ממשק משתמש של Navigation SDK עומד להופיע, וכשהרכיב יוסר. אפשר לקבל קריאות חוזרות לגבי רכיבים של שיבושים בזמן אמת, כולל כרטיסי מידע, הנחיות ותפריט הדיווח על שיבושים, וגם לגבי התראות אחרות שנוצרות על ידי Navigation SDK.Swift
// Additional methods added to GMSNavigatorListener ... func navigatorWillPresentPrompt(_ navigator: GMSNavigator) { // Hide any sort of custom UI element. } func navigatorDidDismissPrompt(_ navigator: GMSNavigator) { // Show any sort of custom UI element. } ...
Objective-C
// Additional methods added to GMSNavigatorListener ... - (void)navigatorWillPresentPrompt:(GMSNavigator *)navigator { // Hide any sort of custom UI element. } - (void)navigatorDidDismissPrompt:(GMSNavigator *)navigator { // Show any sort of custom UI element. } ...