Pilih platform: Android iOS

Mengonfigurasi gangguan real-time

Gangguan real-time adalah kumpulan fitur yang memberi tahu pengguna tentang gangguan di sepanjang rute mereka dan memungkinkan pengguna melaporkan serta memverifikasi gangguan yang mereka temui. Contoh gangguan mencakup kecelakaan kendaraan, kemacetan lalu lintas, keberadaan polisi dan kamera pengukur kecepatan, konstruksi, penutupan jalur, dan kondisi cuaca tertentu. Halaman ini menjelaskan fitur gangguan real-time dan opsi konfigurasinya, termasuk pertimbangan untuk aplikasi yang menggunakan UI navigasi kustom.

Fitur gangguan real-time

Navigation SDK menyertakan fitur gangguan real-time berikut sebagai bagian dari pengalaman navigasi inti:

Fitur ini dapat dikonfigurasi dan diaktifkan secara default. Bagian berikut memberikan informasi selengkapnya tentang fitur dan opsi konfigurasi yang tersedia.

Callout gangguan interaktif di sepanjang rute

Saat aplikasi menampilkan rute, baik dalam ringkasan rute maupun selama navigasi aktif, gangguan saat ini akan muncul sebagai callout di sepanjang rute. Callout menyertakan ikon yang menunjukkan jenis gangguan.

Info di sepanjang rute

Anda dapat mengontrol tampilan callout gangguan di sepanjang rute menggunakan setTrafficPromptsEnabled, yang juga mengontrol tampilan peringatan otomatis saat pengguna mendekati gangguan.

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

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

Menampilkan detail gangguan saat pengguna mengetuk callout

Pengguna dapat mengetuk callout untuk menampilkan kartu info dengan informasi selengkapnya tentang gangguan, termasuk jenis gangguan, waktu terakhir dilaporkan, dan dalam beberapa kasus, opsi untuk memberikan suara apakah gangguan masih ada. Ada dua jenis kartu info yang mungkin muncul, bergantung pada apakah pengguna berada dalam navigasi aktif, dan opsi konfigurasi bervariasi untuk setiap jenis.

Kartu info callout di ringkasan rute, sebelum memulai navigasi aktif

Saat pengguna mengetuk callout di ringkasan rute, sebelum memulai navigasi aktif, kartu info akan muncul dengan informasi selengkapnya tentang gangguan.

Kartu info ringkasan

Anda dapat mengontrol kemampuan pengguna untuk mengetuk callout gangguan di ringkasan rute guna menampilkan informasi selengkapnya menggunakan setTrafficIncidentCardsEnabled .

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

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

Kartu info callout selama navigasi aktif

Saat callout gangguan muncul di sepanjang rute selama navigasi aktif, pengguna dapat mengetuk callout untuk menampilkan kartu info dengan informasi selengkapnya tentang gangguan, termasuk jenis gangguan dan waktu terakhir dilaporkan, serta tombol untuk memberikan suara apakah gangguan masih ada. Suara yang dikirimkan oleh pengguna diproses oleh Google dan dapat ditampilkan di peta untuk pengguna Google Maps dan Navigation SDK lainnya, serta digunakan untuk menentukan apakah akan terus menampilkan gangguan tersebut.

Kartu info navigasi aktif

Anda dapat mengontrol tampilan dan kemampuan mengetuk callout gangguan selama navigasi aktif menggunakan setTrafficPromptsEnabled , yang juga mengontrol tampilan callout di sepanjang rute dan tampilan peringatan otomatis saat pengguna mendekati gangguan.

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

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

Peringatan gangguan otomatis dengan voting selama navigasi aktif

Selama navigasi aktif, saat pengguna mendekati gangguan di sepanjang rute, perintah akan muncul dengan informasi tentang gangguan dan tombol untuk memberikan suara apakah gangguan masih ada. Suara yang dikirimkan oleh pengguna diproses oleh Google dan dapat ditampilkan di peta untuk pengguna Google Maps dan Navigation SDK lainnya, serta digunakan untuk menentukan apakah akan terus menampilkan gangguan tersebut.

Kartu info navigasi aktif

Anda dapat mengonfigurasi tampilan perintah peringatan selama navigasi aktif menggunakan setTrafficPromptsEnabled , yang juga mengontrol tampilan callout di sepanjang rute.

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

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

Pelaporan gangguan selama navigasi aktif

Selama mode navigasi aktif, tombol akan muncul di UI navigasi yang memungkinkan pengguna melaporkan gangguan baru di sepanjang rute mereka. Saat pengguna mengetuk tombol, menu dengan jenis gangguan yang tersedia untuk dilaporkan akan muncul. Laporan yang dikirimkan pengguna diproses oleh Google dan dapat ditampilkan di peta untuk pengguna Google Maps dan Navigation SDK lainnya.

Tombol pelaporan Menu pelaporan

Menampilkan atau menyembunyikan tombol pelaporan standar

Anda dapat mengonfigurasi visibilitas tombol pelaporan standar selama navigasi aktif menggunakan 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);

Menambahkan tombol pelaporan kustom

Sebagai pengganti tombol pelaporan gangguan standar, Anda dapat menambahkan tombol pelaporan kustom ke UI navigasi. Saat pengguna mengklik tombol kustom, Anda dapat memicu tampilan menu pelaporan dengan memanggil metode showReportIncidentsPanel. Sebelum menambahkan tombol pelaporan kustom, pastikan aplikasi berada dalam navigasi aktif dan pengguna berada di negara tempat pelaporan diaktifkan dengan memanggil isIncidentReportingAvailable. Jika salah satu di antaranya tidak benar, menu pelaporan tidak akan muncul.

  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());
  

Menggunakan UI navigasi kustom

Jika penerapan Navigation SDK Anda menyertakan elemen UI kustom, Anda harus mempertimbangkan elemen gangguan real-time untuk menghindari konflik.

Penentuan posisi tombol pelaporan

Secara default, tombol pelaporan gangguan diposisikan di ujung bawah/sudut akhir peta—di sisi kanan untuk bahasa kiri ke kanan dan sisi kiri untuk bahasa kanan ke kiri. Jika Anda perlu memindahkan tombol pelaporan untuk menyediakan ruang bagi elemen UI kustom, tambahkan kontrol kustom BOTTOM_END_BELOW atau FOOTER, yang akan mendorong posisi tombol ke atas di layar. Menempatkan UI kustom Anda sendiri dalam kontrol kustom juga memastikan bahwa perintah apa pun yang ditampilkan oleh Navigation SDK akan dilapisi dengan benar di atas elemen UI kustom Anda saat ditampilkan. Jika Anda tidak dapat menggunakan kontrol kustom, gunakan Prompt Visibility API untuk mengelola potensi konflik UI.

Prompt Visibility API (Eksperimental)

Prompt Visibility API membantu Anda menghindari konflik antara elemen UI yang dihasilkan oleh Navigation SDK dan elemen UI kustom Anda sendiri dengan menambahkan pemroses untuk menerima callback sebelum elemen UI Navigation SDK akan muncul dan segera setelah elemen dihapus. Anda dapat menerima callback untuk elemen gangguan real-time, termasuk kartu info, perintah, dan menu pelaporan gangguan—serta untuk notifikasi lain yang dihasilkan oleh 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)