הגדרת שיבושים בזמן אמת
התכונה "שיבושים בזמן אמת" היא אוסף של תכונות שמתריעות למשתמשים על שיבושים לאורך המסלול שלהם, ומאפשרות להם לדווח על שיבושים שהם נתקלים בהם ולאמת אותם. דוגמאות לשיבושים: תאונות דרכים, עומסי תנועה, נוכחות של משטרה ומצלמות מהירות, עבודות בכביש, נתיבים חסומים ותנאי מזג אוויר מסוימים. בדף הזה מוסבר על התכונות של שיבושים בזמן אמת ועל אפשרויות ההגדרה שלהן, כולל שיקולים לגבי אפליקציות שמשתמשות בממשקי משתמש מותאמים אישית לניווט.
תכונות של שיבושים בזמן אמת
Navigation SDK כולל את התכונות הבאות לזיהוי שיבושים בזמן אמת, כחלק מחוויית הניווט העיקרית:- הודעות אינטראקטיביות על הפרעות לאורך מסלולים.
- התראות אוטומטיות על שיבושים עם אפשרות להצביע במהלך ניווט פעיל.
- דיווח על שיבושים במהלך ניווט פעיל.
התכונות האלה ניתנות להגדרה ומופעלות כברירת מחדל. בקטעים הבאים מפורט מידע נוסף על התכונות ועל אפשרויות ההגדרה הזמינות.
הסברים אינטראקטיביים על שיבושים לאורך המסלולים
כשאפליקציה מציגה מסלול, בסקירת מסלול או במהלך ניווט פעיל, כל השיבושים הנוכחיים מופיעים כהסברים לאורך המסלול. כשמפעילים את שכבת התנועה, גם שיבושים מחוץ למסלול מופיעים במפה. ההסברים כוללים סמל שמציין את סוג השיבוש.
אתם יכולים לשלוט בהצגת הודעות על שיבושים לאורך מסלולים באמצעות setTrafficPromptsEnabled, שגם שולט בהצגת התראות אוטומטיות כשמשתמש מתקרב לשיבוש.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
הצגת פרטי השיבוש כשמשתמש לוחץ על תקציר
לחיצה על סימון של שיבוש פותחת כרטיס מידע עם פרטים נוספים. ההודעות האלה מופיעות גם במסלול וגם מחוץ למסלול, אבל ההודעות מחוץ למסלול מופיעות רק אם שכבת התנועה מופעלת. בכרטיס מוצגים סוג השיבוש, השעה שבה הוא דווח לאחרונה, ולפעמים גם אפשרות להצביע אם השיבוש עדיין קיים. סוג כרטיס המידע ואפשרויות ההגדרה שלו משתנים בהתאם למצב הניווט של המשתמש.
כרטיסי מידע עם הסברים בסקירות הכלליות של המסלולים, לפני שמתחילים בניווט פעיל
לפני שמתחילים לנווט, אפשר ללחוץ על כיתוב במסלול או מחוץ למסלול במפה או בסקירת המסלול כדי לפתוח כרטיס מידע. כדי להציג הודעות על עיכובים במסלול, צריך להפעיל את שכבת התנועה. בכרטיס המידע מופיעים פרטים נוספים על השיבוש.
אתם יכולים להשתמש ב-setTrafficIncidentCardsEnabled כדי לקבוע אם המשתמשים יוכלו ללחוץ על הסמלים של השיבושים בסקירות המסלולים כדי להציג מידע נוסף.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
כרטיסי מידע עם הסברים במהלך ניווט פעיל
בזמן הניווט, המשתמשים יכולים ללחוץ על הסבר קצר על שיבוש במסלול או מחוץ למסלול כדי לפתוח כרטיס מידע. בכרטיס מוצגים סוג השיבוש והמועד האחרון שבו דווח עליו, והוא כולל לחצנים שמאפשרים למשתמשים להצביע אם השיבוש עדיין קיים.
ההצבעה זמינה לשיבושים במסלול ומחוץ למסלול בטווח של 5 ק"מ מהמשתמש, לא כולל סגירת כבישים. Google מעבדת את ההצבעות האלה כדי לקבוע אם להמשיך להציג את השיבוש. ההצבעות עשויות להופיע במפה גם למשתמשים אחרים במפות Google וב-Navigation SDK.
אתם יכולים לשלוט בתצוגה וביכולת ללחוץ על הודעות על שיבושים במהלך ניווט פעיל באמצעות
setTrafficPromptsEnabled
, שגם שולט ב
הצגת הודעות לאורך מסלולים וב
הצגת התראות אוטומטיות כשמשתמש מתקרב לשיבוש.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
התראות אוטומטיות על שיבושים עם אפשרות להצביע בזמן ניווט פעיל
במהלך ניווט פעיל, כשמשתמש מתקרב לשיבוש לאורך המסלול, מופיעה הנחיה עם מידע על השיבוש ולחצנים להצבעה אם השיבוש עדיין קיים. Google מעבדת את ההצבעות של המשתמשים, ויכול להיות שהן יוצגו במפה למשתמשים אחרים במפות Google וב-Navigation SDK. בנוסף, ההצבעות משמשות כדי לקבוע אם להמשיך להציג את ההפרעה.
אפשר להגדיר את הצגת ההתראות במהלך ניווט פעיל באמצעות setTrafficPromptsEnabled, שגם שולט בהצגת ההתראות לאורך המסלולים.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
דיווח על שיבושים במהלך ניווט פעיל
במצב ניווט פעיל, מופיע כפתור בממשק המשתמש של הניווט שמאפשר למשתמשים לדווח על שיבושים חדשים לאורך המסלול שלהם. כשמשתמש מקיש על הכפתור, מופיע תפריט עם סוגי השיבושים הזמינים לדיווח. Google מעבדת את הדיווחים שהמשתמשים שולחים, ויכול להיות שהם יוצגו במפה למשתמשים אחרים במפות Google וב-Navigation SDK.
אם תדווחו על סגירת כביש, יכול להיות שיוצג לכם מסלול חלופי כדי לעקוף את הקטע החסום, ותתבקשו לאשר או לדחות את שינוי המסלול. התכונה הזו זמינה רק בחלק מהמכשירים.
הצגה או הסתרה של כפתור הדיווח הרגיל
אפשר להגדיר את החשיפה של כפתור הדיווח הרגיל במהלך ניווט פעיל באמצעות
setReportIncidentButtonEnabled
.
// Enables the incident reporting button to show in situations where incident // reporting is possible. // Using the SupportNavigationFragment mNavFragment.setReportIncidentButtonEnabled(true); // Using the NavigationView navigationView.setReportIncidentButtonEnabled(true);
הוספת כפתור לדיווח בהתאמה אישית
במקום הכפתור הרגיל לדיווח על שיבושים, אתם יכולים להוסיף כפתור דיווח בהתאמה אישית לממשק המשתמש של הניווט. כשהמשתמש לוחץ על הכפתור בהתאמה אישית, אפשר להפעיל את הצגת תפריט הדיווח על ידי קריאה ל-method showReportIncidentsPanel. לפני שמוסיפים כפתור דיווח בהתאמה אישית, צריך לוודא שהאפליקציה נמצאת במצב ניווט פעיל ושהמשתמש נמצא במדינה שבה הדיווח מופעל. כדי לעשות את זה, שולחים קריאה ל-isIncidentReportingAvailable. אם אחד מהתנאים האלה לא מתקיים, תפריט הדיווח לא יופיע.
Button customReportIncidentButton = findViewById(R.id.custom_reporting_button); // Check if reporting is available before displaying your button customReportIncidentButton.setVisibility( navigationView.isReportingAvailable ? View.VISIBLE : View.GONE); // Trigger the reporting flow if the button is clicked customReportIncidentButton.setOnClickListener(v -> navigationView.showReportIncidentsPanel());
עבודה עם ממשקי משתמש מותאמים אישית לניווט
אם ההטמעה של Navigation SDK כוללת רכיבים מותאמים אישית בממשק המשתמש, צריך להביא בחשבון את הרכיבים של השיבושים בזמן אמת כדי למנוע התנגשויות.
מיקום כפתור הדיווח
כברירת מחדל, הכפתור לדיווח על שיבושים ממוקם בפינה התחתונה של המפה – בצד ימין בשפות שנכתבות משמאל לימין, ובצד שמאל בשפות שנכתבות מימין לשמאל. אם אתם צריכים להזיז את כפתור הדיווח כדי לפנות מקום לרכיבים מותאמים אישית בממשק המשתמש, הוסיפו פקד מותאם אישית מסוגBOTTOM_END_BELOW או FOOTER, שיזיז את הכפתור למעלה במסך. הצבת ממשקי משתמש בהתאמה אישית בתוך הפקדים בהתאמה אישית גם מבטיחה שכל ההנחיות שמוצגות על ידי Navigation SDK יופיעו בשכבה מעל רכיבי ממשק המשתמש בהתאמה אישית בזמן שהם מוצגים. אם אתם לא יכולים להשתמש בפקדים מותאמים אישית, השתמשו ב-Prompt Visibility API כדי לנהל התנגשויות פוטנציאליות בממשק המשתמש.
Prompt Visibility API (ניסיוני)
Prompt Visibility API עוזר לכם למנוע התנגשויות בין רכיבים בממשק המשתמש שנוצרו על ידי Navigation SDK לבין רכיבים בממשק המשתמש שאתם התאמתם אישית. כדי לעשות את זה, הוא מוסיף מאזין שמקבל קריאה חוזרת (callback) לפני שרכיב בממשק המשתמש של Navigation SDK עומד להופיע וברגע שהרכיב מוסר. אתם יכולים לקבל קריאות חוזרות (callbacks) לגבי רכיבים של שיבושים בזמן אמת, כולל כרטיסי מידע, הנחיות ותפריט הדיווח על שיבושים, וגם לגבי התראות אחרות שנוצרות על ידי Navigation SDK.// Sample listener val listener: PromptVisibilityChangedListener = { isVisible -> if (isVisible) { customFab.visibility = false customFooter.visibility = false moveSomeOtherThingsAround() } else { customFab.visibility = true customFooter.visibility = true moveSomeThingsBackToWhereTheyWereBefore() } } // Inside onCreate() navigationView.addPromptVisibilityChangedListener(listener) // Inside onDestroy() navigationView.removePromptVisibilityChangedListener(listener)