Android için Navigasyon SDK'sını kullanarak, haritanızda hangi yerleşik kullanıcı arayüzü kontrollerinin ve öğelerinin gösterileceğini belirleyerek haritanızdaki kullanıcı deneyimini değiştirebilirsiniz. Navigasyon kullanıcı arayüzünün görsel görünümünü de ayarlayabilirsiniz. Gezinme kullanıcı arayüzünde kabul edilen değişikliklerle ilgili yönergeler için Politikalar sayfasına bakın.
Bu dokümanda, haritanızın kullanıcı arayüzünün iki şekilde nasıl değiştirileceği açıklanmaktadır:
Harita kullanıcı arayüzü kontrolleri
Harita kullanıcı arayüzü denetimleri, özel kullanıcı arayüzü öğelerini navigasyon görünümüne yerleştirmek için doğru konumlandırmayı sağlamak amacıyla önerilen yöntemdir. Yerleşik düzen değiştiğinde Android için Navigasyon SDK'sı, özel kontrollerinizi otomatik olarak yeniden konumlandırır. Her konum için aynı anda bir özel kontrol görünümü ayarlayabilirsiniz. Tasarımınız birden fazla kullanıcı arayüzü öğesi gerektiriyorsa bunları bir ViewGroup
içine yerleştirip setCustomControl
yöntemine iletebilirsiniz.
setCustomControl
yöntemi, CustomControlPosition
enum içinde tanımlanan konumları sağlar:
SECONDARY_HEADER
(yalnızca dikey modda gösterilir)BOTTOM_START_BELOW
BOTTOM_END_BELOW
FOOTER


Özel kontrol ekleme
- Özel kullanıcı arayüzü öğesi veya ViewGroup ile bir Android Görünümü oluşturun.
- Görünümün bir örneğini almak için XML'i şişirin veya özel görünümü örneklendirin.
CustomControlPosition
enum içinden seçilen özel kontrol konumuyla birlikteNavigationView.setCustomControl
veyaSupportNavigationFragment.setCustomControl
kullanın.Aşağıdaki örnekte bir parça oluşturuluyor ve ikincil üstbilgi konumuna özel bir kontrol ekleniyor.
mNavFragment.setCustomControl(getLayoutInflater(). inflate(R.layout.your_custom_control, null), CustomControlPosition.SECONDARY_HEADER); ```
Özel bir kontrolü kaldırma
Özel bir denetimi kaldırmak için setCustomControl
yöntemini null
görünüm parametresi ve seçili özel denetim konumuyla çağırın.
Örneğin, aşağıdaki snippet'te tüm özel ikincil başlıklar kaldırılır ve varsayılan içeriğe dönülür:
mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
Özel kontrol konumları
İkincil başlık

Bu özel kontrol konumunu kullanmak için CustomControlPosition.SECONDARY_HEADER
konumunu setCustomControl
'e iletin.
Varsayılan olarak, gezinme modundaki ekran düzenleri birincil başlığın altında ikincil bir başlık için bir konum sağlar. Bu ikincil başlık, şerit yönlendirmesi gibi durumlarda gerektiğinde gösterilir. Uygulamanız, özel içerik için düzenin bu ikincil başlık konumunu kullanabilir. Bu özelliği kullandığınızda varsayılan ikincil başlık içeriğini kontrol edebilirsiniz. Gezinme görünümünüzde arka plan varsa bu arka plan, ikincil başlık tarafından örtülmüş şekilde yerinde kalır. Uygulamanız özel denetimi kaldırdığında, bunun yerine varsayılan ikincil bir başlık görünebilir.
Özel ikincil başlık konumunun üst kenarı, birincil başlığın alt kenarıyla hizalanır. Bu konum yalnızca portrait mode
'te desteklenir. landscape mode
'te ikincil başlık kullanılamaz ve düzen değişmez.
Alttan başlangıç


Bu özel kontrol konumunu kullanmak için CustomControlPosition.BOTTOM_START_BELOW
konumunu setCustomControl
'e iletin.
Bu özel denetim konumu, haritanın alt başlangıç köşesinde yer alır. Hem portrait mode
hem de landscape mode
'te ETA kartının ve/veya özel altbilginin (veya ikisi de yoksa haritanın alt kısmında) üzerinde yer alır ve yeniden merkezleme düğmesi ile Google logosu da dahil olmak üzere Nav SDK öğeleri, özel kontrol görünümünün yüksekliğini hesaba katmak için yukarı doğru hareket eder. Bu denetim, görünür harita sınırları içinde konumlandırılır. Bu nedenle, haritanın alt veya başlangıç kenarlarına eklenen tüm dolgular bu denetimin konumunu da değiştirir.
Alt uç


Bu özel kontrol konumunu kullanmak için CustomControlPosition.BOTTOM_END_BELOW
konumunu setCustomControl
'e iletin.
Bu özel kontrol konumu, haritanın alt köşesinde yer alır. portrait mode
sürümünde, ETA kartının ve/veya özel altbilginin (veya ikisi de yoksa haritanın alt kısmında) üzerinde yer alır. landscape mode
sürümünde ise haritanın alt kısmına hizalanır. Bitiş tarafında (LTR'de sağ taraf) görünen tüm Nav SDK öğeleri, özel kontrol görünümünün yüksekliğini hesaba katmak için yukarı taşınır. Bu denetim, görünür harita sınırları içinde konumlandırılır. Bu nedenle, haritanın alt veya uç kenarlarına eklenen dolgular bu denetimin konumunu da değiştirir.
Altbilgi


Bu özel kontrol konumunu kullanmak için CustomControlPosition.FOOTER
konumunu setCustomControl
'e iletin.
Bu özel kontrol konumu, özel bir altbilgi görünümü için tasarlanmıştır. Nav SDK ETA kartı görünür durumdaysa bu kontrol kartı onun üzerinde yer alır. Aksi takdirde, kontrol, haritanın alt kısmıyla hizalanır. BOTTOM_START_BELOW
ve BOTTOM_END_BELOW
özel kontrollerinin aksine bu kontrol, görünür harita sınırları dışında konumlandırılır. Bu da haritaya eklenen dolguların bu kontrolün konumunu değiştirmeyeceği anlamına gelir.
portrait mode
'te özel altbilgi tam genişliktedir. Hem CustomControlPosition.BOTTOM_START_BELOW
hem de CustomControlPosition.BOTTOM_END_BELOW
konumlarındaki özel kontrollerin yanı sıra yeniden merkezleme düğmesi ve Google logosu gibi Nav SDK kullanıcı arayüzü öğeleri, özel kontrol altbilgilerinin üzerinde konumlandırılır. Ok işaretinin varsayılan konumu, özel altbilgi yüksekliğini hesaba katar.
landscape mode
'te özel altbilgi, Nav SDK ETA kartı gibi yarı genişliktedir ve başlangıç tarafına (LTR'de sol taraf) hizalanır. CustomControlPosition.BOTTOM_START_BELOW
konumundaki özel kontroller ve yeniden ortalama düğmesi ile Google logosu gibi Nav SDK kullanıcı arayüzü öğeleri, özel kontrol altbilgilerinin üzerinde konumlandırılır. CustomControlPosition.BOTTOM_END_BELOW
konumundaki özel kontroller ve uç taraftaki (LTR'de sağ taraftaki) tüm Nav SDK kullanıcı arayüzü öğeleri haritanın alt kısmıyla hizalı kalır. Özel bir altbilgi bulunduğunda chevron'un varsayılan konumu değişmez. Bunun nedeni, altbilginin haritanın son tarafına kadar uzanmamasıdır.
CustomControlPosition.BOTTOM_START_BELOW
ve CustomControlPosition.BOTTOM_END_BELOW
konumlarındaki özel kontrollerin yanı sıra yeniden merkezleme düğmesi ve Google logosu gibi Nav SDK kullanıcı arayüzü öğeleri, özel kontrol altbilgilerinin üzerinde konumlandırılır.
Harita kullanıcı arayüzü aksesuarları
Android için Navigasyon SDK'sı, navigasyon sırasında Android için Google Haritalar uygulamasında bulunanlara benzer kullanıcı arayüzü aksesuarları sağlar. Bu kontrollerin görünürlüğünü veya görsel görünümünü bu bölümde açıklandığı şekilde ayarlayabilirsiniz. Burada yaptığınız değişiklikler bir sonraki gezinme oturumunda yansıtılır.
Gezinme kullanıcı arayüzünde kabul edilen değişikliklerle ilgili kurallar için Politikalar sayfasına bakın.
Kodu görüntüleme
Gezinme etkinliği için Java kodunu göster/gizle
package com.example.navsdkcustomization; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.GoogleMap.CameraPerspective; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.libraries.navigation.ListenableResultFuture; import com.google.android.libraries.navigation.NavigationApi; import com.google.android.libraries.navigation.Navigator; import com.google.android.libraries.navigation.SimulationOptions; import com.google.android.libraries.navigation.StylingOptions; import com.google.android.libraries.navigation.SupportNavigationFragment; import com.google.android.libraries.navigation.Waypoint; /** An activity that displays a map and a customized navigation UI. */ public class NavigationActivityCustomization extends AppCompatActivity { private static final String TAG = NavigationActivityCustomization.class.getSimpleName(); private Navigator mNavigator; private SupportNavigationFragment mNavFragment; private GoogleMap mMap; // Define the Sydney Opera House by specifying its place ID. private static final String SYDNEY_OPERA_HOUSE = "ChIJ3S-JXmauEmsRUcIaWtf4MzE"; // Set fields for requesting location permission. private static final int PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1; private boolean mLocationPermissionGranted; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialize the Navigation SDK. initializeNavigationSdk(); } /** * Starts the Navigation SDK and sets the camera to follow the device's location. Calls the * navigateToPlace() method when the navigator is ready. */ private void initializeNavigationSdk() { /* * Request location permission, so that we can get the location of the * device. The result of the permission request is handled by a callback, * onRequestPermissionsResult. */ if (ContextCompat.checkSelfPermission( this.getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mLocationPermissionGranted = true; } else { ActivityCompat.requestPermissions( this, new String[] {android.Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); } if (!mLocationPermissionGranted) { displayMessage( "Error loading Navigation SDK: " + "The user has not granted location permission."); return; } // Get a navigator. NavigationApi.getNavigator( this, new NavigationApi.NavigatorListener() { /** Sets up the navigation UI when the navigator is ready for use. */ @Override public void onNavigatorReady(Navigator navigator) { displayMessage("Navigator ready."); mNavigator = navigator; mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment); // Get the map. mNavFragment.getMapAsync( new OnMapReadyCallback() { @Override public void onMapReady(GoogleMap map) { mMap = map; // Navigate to a place, specified by Place ID. navigateToPlace(SYDNEY_OPERA_HOUSE); } }); } /** * Handles errors from the Navigation SDK. * * @param errorCode The error code returned by the navigator. */ @Override public void onError(@NavigationApi.ErrorCode int errorCode) { switch (errorCode) { case NavigationApi.ErrorCode.NOT_AUTHORIZED: displayMessage( "Error loading Navigation SDK: Your API key is " + "invalid or not authorized to use the Navigation SDK."); break; case NavigationApi.ErrorCode.TERMS_NOT_ACCEPTED: displayMessage( "Error loading Navigation SDK: User did not accept " + "the Navigation Terms of Use."); break; case NavigationApi.ErrorCode.NETWORK_ERROR: displayMessage("Error loading Navigation SDK: Network error."); break; case NavigationApi.ErrorCode.LOCATION_PERMISSION_MISSING: displayMessage( "Error loading Navigation SDK: Location permission " + "is missing."); break; default: displayMessage("Error loading Navigation SDK: " + errorCode); } } }); } /** Customizes the navigation UI and the map. */ private void customizeNavigationUI() { // Set custom colors for the navigator. 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)); mMap.setTrafficEnabled(false); // 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(BitmapDescriptorFactory.fromBitmap(destinationMarkerIcon)) .title("Destination marker")); // Listen for a tap on the marker. mMap.setOnMarkerClickListener( new GoogleMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { displayMessage( "Marker tapped: " + marker.getTitle() + ", at location " + marker.getPosition().latitude + ", " + marker.getPosition().longitude); // The event has been handled. return true; } }); } // Set the camera to follow the device location with 'TILTED' driving view. mMap.followMyLocation(CameraPerspective.TILTED); } /** * Requests directions from the user's current location to a specific place (provided by the * Google Places API). */ private void navigateToPlace(String placeId) { Waypoint destination; try { destination = Waypoint.builder().setPlaceIdString(placeId).build(); } catch (Waypoint.UnsupportedPlaceIdException e) { displayMessage("Error starting navigation: Place ID is not supported."); return; } // Create a future to await the result of the asynchronous navigator task. ListenableResultFuture<Navigator.RouteStatus> pendingRoute = mNavigator.setDestination(destination); // Define the action to perform when the SDK has determined the route. pendingRoute.setOnResultListener( new ListenableResultFuture.OnResultListener<Navigator.RouteStatus>() { @Override public void onResult(Navigator.RouteStatus code) { switch (code) { case OK: // Hide the toolbar to maximize the navigation UI. if (getActionBar() != null) { getActionBar().hide(); } // Customize the navigation UI. customizeNavigationUI(); // Enable voice audio guidance (through the device speaker). mNavigator.setAudioGuidance(Navigator.AudioGuidance.VOICE_ALERTS_AND_GUIDANCE); // Simulate vehicle progress along the route for demo/debug builds. if (BuildConfig.DEBUG) { mNavigator .getSimulator() .simulateLocationsAlongExistingRoute( new SimulationOptions().speedMultiplier(5)); } // Start turn-by-turn guidance along the current route. mNavigator.startGuidance(); break; // Handle error conditions returned by the navigator. case NO_ROUTE_FOUND: displayMessage("Error starting navigation: No route found."); break; case NETWORK_ERROR: displayMessage("Error starting navigation: Network error."); break; case ROUTE_CANCELED: displayMessage("Error starting navigation: Route canceled."); break; default: displayMessage("Error starting navigation: " + String.valueOf(code)); } } }); } /** Handles the result of the request for location permissions. */ @Override public void onRequestPermissionsResult( int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { mLocationPermissionGranted = false; switch (requestCode) { case PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION: { // If request is canceled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { mLocationPermissionGranted = true; } } } } /** * Shows a message on screen and in the log. Used when something goes wrong. * * @param errorMessage The message to display. */ private void displayMessage(String errorMessage) { Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); Log.d(TAG, errorMessage); } }
Gezinme üst bilgisini değiştirme
Gezinme başlığının temasını ve varsa başlığın altında görünen sonraki dönüş göstergesini değiştirmek için SupportNavigationFragment.setStylingOptions()
veya NavigationView.setStylingOptions()
simgesini kullanın.
Aşağıdaki özellikleri ayarlayabilirsiniz:
Özellik Türü | Özellikler |
---|---|
Arka plan rengi |
|
Talimatlar için metin öğeleri |
|
Sonraki adımlar için metin öğeleri |
|
Manevra simgeleri |
|
Şerit yardımı |
|
Aşağıdaki örnekte, stil seçeneklerinin nasıl ayarlanacağı gösterilmektedir:
private SupportNavigationFragment mNavFragment;
mNavFragment = (SupportNavigationFragment) 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
Haritadaki trafik katmanını etkinleştirmek veya devre dışı bırakmak için GoogleMap.setTrafficEnabled()
simgesini kullanın. Bu ayar, haritada gösterilen trafik yoğunluğu göstergelerini bir bütün olarak etkiler. Ancak bu durum, navigasyon cihazı tarafından çizilen rotadaki trafik ipuçlarını etkilemez.
private GoogleMap mMap;
// Get the map, and when the async call returns, setTrafficEnabled
// (callback will be on the UI thread)
mMap = mNavFragment.getMapAsync(navMap -> navMap.setTrafficEnabled(false));
Trafik ışıklarını ve dur levhalarını etkinleştirme
Etkin navigasyon sırasında haritada trafik ışıkları ve dur işaretlerinin gösterilmesini etkinleştirebilirsiniz. Bu sayede rotalar ve yolculuk manevraları için ek bağlam sağlanır.
Trafik ışıkları ve dur işaretleri, Navigasyon SDK'sında varsayılan olarak devre dışıdır. Bu özelliği etkinleştirmek için her bir özellik için ayrı ayrı DisplayOptions
çağrısı yapın.
DisplayOptions displayOptions =
new DisplayOptions().showTrafficLights(true).showStopSigns(true);
Özel işaretçi ekleme
Android için Navigasyon SDK'sı artık işaretçiler için Google Haritalar API'lerini kullanıyor. Daha fazla bilgi için Maps API belgelerine gidin.
Yüzen metin
Google ilişkilendirmesini kapsaması koşuluyla uygulamanızın herhangi bir yerine yüzen metin ekleyebilirsiniz. Navigasyon SDK'sı, metnin haritada bir enlem/boylam veya etikete sabitlenmesini desteklemez. Daha fazla bilgi için Bilgi pencereleri'ne gidin.
Hız sınırını görüntüleme
Hız sınırı simgesini programatik olarak gösterebilir veya gizleyebilirsiniz. Hız sınırı simgesini göstermek veya gizlemek için NavigationView.setSpeedLimitIconEnabled()
veya SupportNavigationFragment.setSpeedLimitIconEnabled()
simgesini kullanın. Etkinleştirildiğinde, hız sınırı simgesi yol tarifi sırasında alt köşede gösterilir. Simge, aracın bulunduğu yolun hız sınırını gösterir. Simge yalnızca güvenilir hız sınırı verilerinin bulunduğu konumlarda gösterilir.
// Display the Speed Limit icon
mNavFragment.setSpeedLimitIconEnabled(true);
Yeniden merkezle düğmesi gösterildiğinde hız sınırı simgesi geçici olarak gizlenir.
Gece modunu ayarlama
Gece modunun davranışını programatik olarak kontrol edebilirsiniz. Gece modunu açmak veya kapatmak için NavigationView.setForceNightMode()
veya SupportNavigationFragment.setForceNightMode()
simgesini kullanın ya da Android için Navigasyon SDK'sının kontrol etmesine izin verin.
AUTO
Navigasyon SDK'sının, cihaz konumuna ve yerel saate göre uygun modu belirlemesine olanak tanır.FORCE_NIGHT
, gece modunu etkinleştirir.FORCE_DAY
, gün modunu etkinleştirir.
Aşağıdaki örnekte, gece modunun bir gezinme fragmanında açılması zorunlu kılınmaktadır:
// Force night mode on.
mNavFragment.setForceNightMode(FORCE_NIGHT);
Yol tarifi listesini görüntüleme
Öncelikle görünümü oluşturun ve hiyerarşinize ekleyin.
void 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ü etkinliklerini, NavigationView
'ta olduğu gibi DirectionsListView
'e yönlendirdiğinizden emin olun. Örneğin:
protected void onResume() {
super.onResume();
directionsListView.onResume();
}
Alternatif rotaları gizleme
Kullanıcı arayüzü çok fazla bilgiyle karmaşıklaştığında, varsayılan değerden (iki) daha az alternatif rota göstererek veya hiç alternatif rota göstermeyerek karmaşıklığı azaltabilirsiniz. Rotaları getirmeden önce RoutingOptions.alternateRoutesStrategy()
yöntemini aşağıdaki listeleme değerlerinden biriyle çağırarak bu seçeneği yapılandırabilirsiniz:
Numaralandırma değeri | Açıklama |
---|---|
AlternateRoutesStrategy.SHOW_ALL | Varsayılan. En fazla iki alternatif rota gösterilir. |
AlternateRoutesStrategy.SHOW_ONE | Bir alternatif rota (varsa) gösterilir. |
AlternateRoutesStrategy.SHOW_NONE | Alternatif rotaları gizler. |
Aşağıdaki kod örneğinde, alternatif rotaların nasıl tamamen gizleneceği gösterilmektedir.
RoutingOptions routingOptions = new RoutingOptions();
routingOptions.alternateRoutesStrategy(AlternateRoutesStrategy.SHOW_NONE);
navigator.setDestinations(destinations, routingOptions, displayOptions);
Seyahat ilerleme çubuğu
Gezi ilerleme çubuğu, navigasyon başladığında haritanın sağ arka kenarında görünen dikey bir çubuktur. Etkinleştirildiğinde, kullanıcının varış noktası ve mevcut konumu ile birlikte tüm seyahate genel bir bakış gösterilir.
Bu sayede kullanıcılar, yakınlaştırmaya gerek kalmadan trafik gibi yaklaşan sorunları hızlıca tahmin edebilir. Gerekirse yolcular seyahat rotasını yeniden belirleyebilir. Kullanıcı seyahat rotasını değiştirirse ilerleme çubuğu, o noktadan yeni bir seyahat başlamış gibi sıfırlanır.
Gezi ilerleme çubuğunda aşağıdaki durum göstergeleri gösterilir:
Rota süresi: Seyahatin geçen kısmı.
Mevcut konum: Kullanıcının yolculuktaki mevcut konumu.
Trafik durumu: Yaklaşan trafiğin durumu.
Nihai varış noktası: Son seyahat varış noktası.
NavigationView veya SupportNavigationFragment üzerinde setTripProgressBarEnabled()
yöntemini çağırarak gezi ilerleme çubuğunu etkinleştirin.
Örneğin:
// Enable the trip progress bar.
mNavFragment.setTripProgressBarEnabled(true);