Menyesuaikan Antarmuka Pengguna Navigasi

Anda dapat menyesuaikan elemen antarmuka pengguna navigasi dan peta, serta menambahkan penanda kustom ke peta. Lihat halaman Kebijakan untuk mendapatkan panduan tentang perubahan yang dapat diterima pada UI Navigasi.

Melihat kode

Menyesuaikan header navigasi

Gunakan NavigationFragment.setStylingOptions() atau NavigationView.setStylingOptions() untuk mengubah tema header navigasi dan indikator belokan berikutnya yang muncul di bawah header jika tersedia.

Anda dapat menetapkan atribut berikut:

Jenis AtributAtribut
Warna latar belakang
  • Mode siang utama - warna header navigasi di siang hari
  • Mode hari sekunder - warna siang hari dari indikator belokan berikutnya
  • Mode malam utama - warna header navigasi di malam hari
  • Mode malam sekunder - warna malam hari untuk indikator belokan berikutnya
Elemen teks untuk petunjuk
  • Warna teks
  • Font
  • Ukuran teks baris pertama
  • Ukuran teks baris kedua
Elemen teks untuk langkah berikutnya
  • Font
  • Warna teks nilai jarak
  • Ukuran teks nilai jarak
  • Warna teks satuan jarak
  • Ukuran teks satuan jarak
Ikon manuver
  • Warna ikon manuver besar
  • Warna ikon manuver kecil
Panduan jalur
  • Warna lajur atau beberapa jalur yang direkomendasikan

Contoh berikut menunjukkan cara menetapkan opsi gaya:

private NavigationFragment mNavFragment;
mNavFragment = (NavigationFragment) getFragmentManager()
        .findFragmentById(R.id.navigation_fragment);
// Set the styling options on the fragment.
mNavFragment.setStylingOptions(new StylingOptions()
        .primaryDayModeThemeColor(0xff1A237E)
        .secondaryDayModeThemeColor(0xff3F51B5)
        .primaryNightModeThemeColor(0xff212121)
        .secondaryNightModeThemeColor(0xff424242)
        .headerLargeManeuverIconColor(0xffffff00)
        .headerSmallManeuverIconColor(0xffffa500)
        .headerNextStepTypefacePath("/system/fonts/NotoSerif-BoldItalic.ttf")
        .headerNextStepTextColor(0xff00ff00)
        .headerNextStepTextSize(20f)
        .headerDistanceTypefacePath("/system/fonts/NotoSerif-Italic.ttf")
        .headerDistanceValueTextColor(0xff00ff00)
        .headerDistanceUnitsTextColor(0xff0000ff)
        .headerDistanceValueTextSize(20f)
        .headerDistanceUnitsTextSize(18f)
        .headerInstructionsTypefacePath("/system/fonts/NotoSerif-BoldItalic.ttf")
        .headerInstructionsTextColor(0xffffff00)
        .headerInstructionsFirstRowTextSize(24f)
        .headerInstructionsSecondRowTextSize(20f)
        .headerGuidanceRecommendedLaneColor(0xffffa500));

Menonaktifkan lapisan lalu lintas

Gunakan NavigationMap.setTrafficEnabled() untuk mengaktifkan atau menonaktifkan lapisan lalu lintas pada peta. Setelan ini memengaruhi indikasi kepadatan lalu lintas yang ditampilkan di peta secara keseluruhan, tetapi tidak memengaruhi indikasi traffic pada rute yang dipetakan oleh navigator.

private NavigationMap mMap;
// Get the map.
mMap = mNavFragment.getMap();
// Turn off the traffic layer on the map.
mMap.setTrafficEnabled(false);

Menambahkan penanda kustom

Anda dapat menambahkan penanda kustom ke peta untuk menunjukkan lokasi menarik bagi aplikasi atau pengguna Anda. Misalnya, Anda dapat menunjukkan titik penjemputan di akhir rute. Gunakan NavigationMap.addMarker() untuk menambahkan penanda, dan NavigationMap.setOnMarkerClickListener() untuk memproses ketukan pada penanda.

Kode di bawah ini menggunakan ikon yang disimpan dalam resource drawable project, R.drawable.ic_person_pin_48dp. Anda dapat menggunakan gambar apa pun yang sesuai dengan aplikasi Anda.

// Place a marker at the final destination.
if (mNavigator.getCurrentRouteSegment() != null) {
    LatLng destinationLatLng = mNavigator.getCurrentRouteSegment()
        .getDestinationLatLng();

    Bitmap destinationMarkerIcon = BitmapFactory.decodeResource(
            getResources(), R.drawable.ic_person_pin_48dp);

    mMap.addMarker(new MarkerOptions()
            .position(destinationLatLng)
            .icon(destinationMarkerIcon)
            .title("Destination marker"));

    // Listen for a tap on the marker.
    mMap.setOnMarkerClickListener(new NavigationMap.OnMarkerClickListener() {
        @Override
        public void onMarkerClick(Marker marker) {
            displayMessage("Marker tapped: "
                    + marker.getTitle() + ", at location "
                    + marker.getPosition().latitude + ", "
                    + marker.getPosition().longitude);
        }
    });
}

Anda dapat menentukan gambar kustom sebagai penanda; tetapi, SDK saat ini tidak mendukung pelabelan gambar tersebut dengan teks. Untuk informasi selengkapnya, lihat Menyesuaikan Penanda.

Teks mengambang

Anda dapat menambahkan teks mengambang di mana saja di aplikasi, selama atribusi Google tidak tercakup. Navigation SDK tidak mendukung penambatan teks ke lintang/bujur pada peta atau label. Untuk informasi selengkapnya, lihat Jendela info.

Menampilkan batas kecepatan

Anda dapat menampilkan atau menyembunyikan ikon batas kecepatan secara terprogram. Gunakan NavigationFragment.setSpeedLimitIconEnabled(), NavigationView.setSpeedLimitIconEnabled(), atau SupportNavigationFragment.setSpeedLimitIconEnabled() untuk menampilkan atau menyembunyikan ikon batas kecepatan. Jika diaktifkan, ikon batas kecepatan akan ditampilkan di pojok bawah selama panduan. Ikon menampilkan batas kecepatan jalan yang dilalui kendaraan. Ikon ini hanya muncul di lokasi tempat data batas kecepatan yang andal tersedia.

// Display the Speed Limit icon
mNavFragment.setSpeedLimitIconEnabled(true);

Ikon batas kecepatan disembunyikan untuk sementara saat tombol pusatkan ditampilkan.

Menyetel mode malam

Anda dapat mengontrol perilaku mode malam secara terprogram. Gunakan NavigationFragment.setForceNightMode(), NavigationView.setForceNightMode(), atau SupportNavigationFragment.setForceNightMode() untuk mengaktifkan atau menonaktifkan mode malam, atau mengizinkan Navigation SDK mengontrolnya.

  • AUTO Memungkinkan Navigation SDK menentukan mode yang sesuai berdasarkan lokasi perangkat dan waktu lokal.
  • FORCE_NIGHT memaksa mode malam aktif.
  • FORCE_DAY memaksa mode harian aktif.

Contoh berikut menunjukkan memaksa mode malam untuk aktif dalam fragmen navigasi:

// Force night mode on.
mNavFragment.setForceNightMode(FORCE_NIGHT);

Menampilkan daftar rute

Pertama, buat tampilan dan tambahkan ke hierarki Anda.

setupDirectionsListView(){
  // Create the view.
  DirectionsListView directionsListView = new DirectionsListView(getApplicationContext());
  // Add the view to your view hierarchy.
  ViewGroup group = findViewById(R.id.directions_view);
  group.addView(directionsListView);

  // Add a button to your layout to close the directions list view.
  ImageButton button = findViewById(R.id.close_directions_button); // this button is part of the container we hide in the next line.
  button.setOnClickListener(
      v -> findViewById(R.id.directions_view_container).setVisibility(View.GONE));
}

Pastikan untuk meneruskan peristiwa siklus proses ke DirectionsListView seperti yang dilakukan dengan NaviagtionView. Contoh:

protected void onResume() {
  super.onResume();
  directionsListView.onResume();
}

Menyembunyikan rute alternatif

Jika antarmuka pengguna dipenuhi dengan terlalu banyak informasi, Anda dapat mengurangi kerumitan dengan menampilkan lebih sedikit rute alternatif daripada rute default (dua), atau dengan tidak menampilkan rute alternatif sama sekali. Anda dapat mengonfigurasi opsi ini sebelum mengambil rute dengan memanggil metode RoutingOptions.alternateRoutesStrategy() dengan salah satu nilai enumerasi berikut:

Nilai EnumerasiDeskripsi
AlternateRoutesStrategy.SHOW_ALL Default. Menampilkan hingga dua rute alternatif.
AlternateRoutesStrategy.SHOW_ONE Menampilkan satu rute alternatif (jika ada).
AlternateRoutesStrategy.SHOW_NONE Menyembunyikan rute alternatif.

Contoh

Contoh kode berikut menunjukkan cara menyembunyikan rute alternatif sama sekali.

RoutingOptions routingOptions = new RoutingOptions();
routingOptions.alternateRoutesStrategy(AlternateRoutesStrategy.SHOW_NONE);
navigator.setDestinations(destinations, routingOptions, displayOptions);