پلاتفرم را انتخاب کنید: Android iOS

پیکربندی اختلال‌های هم‌زمان

اختلالات هم‌زمان مجموعه‌ای از ویژگی‌ها است که به کاربران درباره اختلالات درطول مسیرشان هشدار می‌دهد و به کاربران امکان می‌دهد اختلالاتی را که با آن‌ها مواجه می‌شوند گزارش و تأیید کنند. نمونه‌هایی از اختلالات شامل تصادفات خودرو، ازدحام ترافیک، حضور پلیس و دوربین‌های سرعت، ساخت‌وساز، بسته شدن خطوط، و شرایط آب‌وهوایی خاص است. این صفحه ویژگی‌های اختلال هم‌زمان و گزینه‌های پیکربندی آن‌ها را توضیح می‌دهد، ازجمله ملاحظاتی برای برنامه‌هایی که از واسط‌های کاربری ناوبری سفارشی استفاده می‌کنند.

ویژگی‌های اختلال هم‌زمان

کیت توسعه نرم‌افزار پیمایش شامل ویژگی‌های اختلال هم‌زمان زیر به‌عنوان بخشی از تجربه پیمایش اصلی است:

این ویژگی‌ها قابل‌پیکربندی هستند و به‌طور پیش‌فرض فعال‌اند. بخش‌های زیر اطلاعات بیشتری درباره ویژگی‌ها و گزینه‌های پیکربندی دردسترس ارائه می‌دهد.

توضیحات تعاملی اختلال درطول مسیرها

وقتی برنامه‌ای مسیری را نمایش می‌دهد، چه در نمای کلی مسیر یا درطول ناوبری فعال، هرگونه اختلال فعلی به‌صورت فراخوان درطول مسیر نشان داده می‌شود. وقتی لایه ترافیک را فعال می‌کنید، اختلالات خارج از مسیر نیز روی نقشه ظاهر می‌شوند. توضیحات شامل نمادی است که نوع اختلال را نشان می‌دهد.

نوشته‌های راهنما درطول مسیرها

بااستفاده از 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);

کارت‌های اطلاعات توضیحی درطول پیمایش فعال

درطول پیمایش فعال، کاربران می‌توانند روی توضیحات اختلال در مسیر یا خارج از مسیر تک‌ضرب بزنند تا کارت اطلاعات باز شود. این کارت نوع اختلال و آخرین زمان گزارش‌شده را نشان می‌دهد و شامل دکمه‌هایی است که کاربران می‌توانند ازطریق آن‌ها درباره اینکه اختلال همچنان وجود دارد یا نه رأی دهند.

رأی دادن برای اختلالات در مسیر و خارج از مسیر در فاصله ۵ کیلومتری کاربر به‌استثنای راه‌بندان‌ها دردسترس است. Google این رأی‌ها را پردازش می‌کند تا تصمیم بگیرد که آیا نمایش اختلال را ادامه دهد یا نه. رأی‌ها ممکن است روی نقشه برای دیگر کاربران Google Maps و Navigation SDK نیز نمایش داده شود.

کارت اطلاعات ناوبری فعال

می‌توانید نمایش و قابل‌تک‌ضرب بودن توضیحات اختلال را درطول پیمایش فعال بااستفاده از setTrafficPromptsEnabled کنترل کنید، که همچنین نمایش توضیحات درطول مسیرها و نمایش هشدارهای خودکارشده را وقتی کاربر به اختلال نزدیک می‌شود کنترل می‌کند.

// Using the SupportNavigationFragment
mNavFragment.setTrafficPromptsEnabled(true);

// Using the NavigationView
navigationView.setTrafficPromptsEnabled(true);

هشدارهای اختلال خودکار با رأی‌گیری درطول ناوبری فعال

درطول ناوبری فعال، وقتی کاربر به اختلالی در مسیر نزدیک می‌شود، پیام‌واره‌ای با اطلاعاتی درباره اختلال و دکمه‌هایی برای رأی دادن درباره اینکه آیا اختلال هنوز وجود دارد یا نه ظاهر می‌شود. رأی‌های ارسال‌شده توسط کاربران توسط Google پردازش می‌شود و ممکن است در نقشه برای دیگر کاربران Google Maps و Navigation SDK نشان داده شود، و همچنین برای تعیین اینکه آیا نمایش اختلال ادامه یابد یا نه استفاده شود.

کارت اطلاعات ناوبری فعال

می‌توانید نمایش پیام‌واره‌های هشدار را درطول پیمایش فعال بااستفاده از setTrafficPromptsEnabled پیکربندی کنید، که نمایش توضیحات درطول مسیر را نیز کنترل می‌کند.

// Using the SupportNavigationFragment
mNavFragment.setTrafficPromptsEnabled(true);

// Using the NavigationView
navigationView.setTrafficPromptsEnabled(true);

گزارش اختلال درطول ناوبری فعال

درطول حالت پیمایش فعال، دکمه‌ای در میانای کاربری پیمایش نشان داده می‌شود که به کاربران امکان می‌دهد اختلالات جدید را درطول مسیرشان گزارش کنند. وقتی کاربر روی دکمه تک‌ضرب می‌زند، منویی با انواع اختلال‌های موجود برای گزارش کردن ظاهر می‌شود. گزارش‌هایی که کاربران ارسال می‌کنند توسط Google پردازش می‌شود و ممکن است در نقشه برای دیگر کاربران Google Maps و 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);

افزودن دکمه گزارش‌دهی سفارشی

به‌جای دکمه گزارش اختلال استاندارد، می‌توانید دکمه گزارش سفارشی به واسط کاربری ناوبری اضافه کنید. وقتی کاربر روی دکمه سفارشی کلیک می‌کند، می‌توانید با فراخوانی روش 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 ظاهر شود و به‌محض اینکه عنصر برداشته می‌شود، به شما کمک می‌کند از تداخل بین عناصر میانای کاربر تولیدشده توسط Navigation SDK و عناصر میانای کاربر سفارشی خودتان جلوگیری کنید. می‌توانید برای عناصر اختلال هم‌زمان، ازجمله کارت‌های اطلاعات، پیام‌واره‌ها، و منو گزارش اختلال، و همچنین برای سایر اعلان‌های تولیدشده توسط 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)