Gezinme Kullanıcı Arayüzünü Özelleştirme

Gezinme kullanıcı arayüzü ve harita öğelerini özelleştirebilir ve haritaya özel işaretçiler ekleyebilirsiniz. Gezinme arayüzünde kabul edilebilir değişiklikler ile ilgili yönergeler için Politikalar sayfasına bakın.

Kodu inceleyin

Gezinme başlığını özelleştirme

Gezinme başlığının temasını ve mümkün olduğunda başlığın altında görünen sonraki dönüş göstergesini değiştirmek için NavigationFragment.setStylingOptions() veya NavigationView.setStylingOptions() aracını kullanın.

Aşağıdaki özellikleri ayarlayabilirsiniz:

Özellik TürüÖzellikler
Arka plan rengi
  • Birincil gün modu - gezinme başlığının gündüz rengi
  • İkincil gün modu - sonraki dönüş göstergesinin gündüz rengi
  • Birincil gece modu - gezinme başlığının gece rengi
  • İkincil gece modu - sonraki dönüş göstergesinin gece rengi
Talimatlar için metin öğeleri
  • Metin rengi
  • Yazı tipi
  • İlk satırın metin boyutu
  • İkinci satırın metin boyutu
Sonraki adımlar için metin öğeleri
  • Yazı tipi
  • Mesafe değerinin metin rengi
  • Mesafe değerinin metin boyutu
  • Uzaklık birimlerinin metin rengi
  • Uzaklık birimlerinin metin boyutu
Manevra simgeleri
  • Büyük manevra simgesinin rengi
  • Küçük manevra simgesinin rengi
Şerit yardımı
  • Önerilen şerit veya şeritlerin rengi

Aşağıdaki örnekte, stil seçeneklerinin nasıl ayarlanacağı gösterilmektedir:

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

Trafik katmanını kapatma

NavigationMap.setTrafficEnabled() düğmesini kullanarak trafik katmanını etkinleştirin veya devre dışı bırakın. Bu ayar, haritada gösterilen trafik yoğunluğunun göstergelerini bir bütün olarak etkiler, ancak rota üzerinde gezgin tarafından çizilen trafik göstergelerini etkilemez.

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

Özel işaretçiler ekleme

Uygulamanız veya kullanıcılarınız için önemli yerleri göstermek üzere haritaya özel işaretçiler ekleyebilirsiniz. Örneğin, rotanın sonunda başlangıç noktasını belirtebilirsiniz. İşaretçi eklemek için NavigationMap.addMarker(), işaretçiye dokunmaları dinlemek için NavigationMap.setOnMarkerClickListener() kullanın.

Aşağıdaki kodda projenin çekilebilir kaynaklarında (R.drawable.ic_person_pin_48dp) depolanan bir simge kullanılmaktadır. Uygulamanıza uygun herhangi bir resmi kullanabilirsiniz.

// 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);
        }
    });
}

İşaretçi olarak özel bir görüntü belirtebilirsiniz ancak SDK, şu anda bu görüntülerin metinle etiketlenmesini desteklememektedir. Daha fazla bilgi için İşaretçileri Özelleştirme bölümüne bakın.

Kayan metin

Google ilişkilendirmesi geçerli olmadığı sürece uygulamanızın herhangi bir yerine kayan metin ekleyebilirsiniz. Gezinme SDK'sı, metnin haritadaki bir enlem/boylama veya bir etikete bağlanmasını desteklemez. Daha fazla bilgi için Bilgi pencereleri konusuna bakın.

Hız sınırını göster

Hız sınırı simgesini programlı olarak gösterebilir veya gizleyebilirsiniz. Hız sınırı simgesini görüntülemek veya gizlemek için NavigationFragment.setSpeedLimitIconEnabled(), NavigationView.setSpeedLimitIconEnabled() veya SupportNavigationFragment.setSpeedLimitIconEnabled() simgesini kullanın. Etkinleştirildiğinde, rehberlik sırasında alt köşede hız sınırı simgesi görüntülenir. Simge, aracın gittiği yolun hız sınırını gösterir. Simge yalnızca güvenilir hız sınırı verilerinin bulunduğu yerlerde görünür.

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

Yeniden ortalama düğmesi görüntülendiğinde hız sınırı simgesi geçici olarak gizlenir.

Gece modunu ayarla

Gece modunun davranışını programlı olarak kontrol edebilirsiniz. Gece modunu açmak veya kapatmak için NavigationFragment.setForceNightMode(), NavigationView.setForceNightMode() ya da SupportNavigationFragment.setForceNightMode() kullanın ya da bu özelliği Gezinme SDK'sinin kontrol etmesine izin verin.

  • AUTO Gezinme SDK'sının cihaz konumuna ve yerel saate göre uygun modu belirlemesine olanak tanır.
  • FORCE_NIGHT, gece modunu açık kalmaya zorlar.
  • FORCE_DAY, gün modunu açık olmaya zorlar.

Aşağıdaki örnekte, bir gezinme parçası içinde gece modunun açılmaya zorlanması gösterilmektedir:

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

Yol tarifi listesini görüntüle

İlk olarak, görünümü oluşturun ve hiyerarşinize ekleyin.

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

Yaşam döngüsü olaylarını, NaviagtionView ile olduğu gibi DirectionsListView'a yönlendirdiğinizden emin olun. Örneğin:

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

Alternatif rotalar gizleniyor

Kullanıcı arayüzü çok fazla bilgiyle karıştığında, varsayılandan (iki) daha az alternatif rota görüntüleyerek veya hiç alternatif rota göstermeyerek karmaşıklığı azaltabilirsiniz. Bu seçeneği, rotaları getirmeden önce aşağıdaki numaralandırma değerlerinden biriyle RoutingOptions.alternateRoutesStrategy() yöntemini çağırarak yapılandırabilirsiniz:

Sıralama DeğeriAçıklama
AlternateRoutesStrategy.SHOW_ALL Varsayılan. En fazla iki alternatif rota görüntülenir.
AlternateRoutesStrategy.SHOW_ONE Bir alternatif rota (varsa) görüntüler.
AlternateRoutesStrategy.SHOW_NONE Alternatif rotaları gizler.

Örnek

Aşağıdaki kod örneğinde, alternatif rotaların tamamen nasıl gizleneceği gösterilmektedir.

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