如何更改导航视图中地图的样式?

How do I change the style of the map in a navigation view?

我正在使用这些导入实现 mapbox 地图和 mapbox 导航:

    implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.5.0'
    implementation 'com.mapbox.mapboxsdk:mapbox-android-navigation-ui:0.42.6'

我有一张自制地图样式的地图,我从中 select 一个目的地位置并启动导航 activity。

button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        boolean simulateRoute = false;
                        NavigationLauncherOptions options = NavigationLauncherOptions.builder()
                                .directionsRoute(currentRoute)
                                .shouldSimulateRoute(simulateRoute)
                                .build();
                        // Call this method with Context from within an Activity
                        NavigationLauncher.startNavigation(NavigationActivity.this, options);
                    }
                });

导航 activity 显示的地图的样式与我在用于启动导航 activity 的地图中使用的样式不匹配。如何更改导航视图中的地图样式以匹配我用于 select 目的地地图的样式。

(幸运的是)做起来并不难 - 只需为此创建一种新样式(在 styles.xml 中)即可。

像这样:(an excerpt from Mapbox's guides/documentation)

[style.xml]

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<!-- Mapbox Navigation style. Loads more items can be styled simply by adding them below. -->    
<style name="NavigationView" parent="Theme.AppCompat.NoActionBar">
    <item name="navigationViewPrimary">@color/mapboxWhite</item>
    <item name="navigationViewSecondary">@color/mapboxBlue</item>
    <item name="navigationViewAccent">@color/mapboxPink</item>
</style>

如上面代码摘录中所述,可以使用上述方法为 UI 的很多(几乎所有)样式设置样式。可以在以下 URL 中找到有关样式化导航 UI SDK 的可能性的深入概述: https://docs.mapbox.com/android/navigation/guides/styles/

除上述之外,似乎还可以通过 NavigationLauncherOptions.Builder 指定浅色和深色样式,如果您对此感兴趣的话。更多信息,here

真诚希望对您有所帮助,欢迎来到 SO!