如何在 Android 中为 Google 地图赋予深色色调

问题描述 投票:0回答:1

我在 Android 应用程序中使用 Google 地图,我想给地图一点色调,它太亮了。我尝试使用另一个盒子,但标记也被着色了,我只希望地图颜色稍暗,标记明亮。

代码-

Box(
    modifier = Modifier
        .fillMaxSize()
        .padding(contentPadding)
) {
    GoogleMap(
        modifier = Modifier.fillMaxSize(),
        googleMapOptionsFactory = {
            GoogleMapOptions().mapId(MapDefaults.mapId)
        },
        cameraPositionState = cameraPositionState,
        properties = style.mapProperties,
        uiSettings = style.mapUiSettings,
        onMapLoaded = {
            onMapLoaded()
        }
    ) {
       //Markers
    }

}

像FlightRadar24地图中这样-

只有地图是暗的,标记是亮的。

enter image description here

android google-maps android-jetpack-compose google-maps-markers google-maps-compose
1个回答
1
投票

要在不影响标记的情况下使 Android 应用程序中的 Google 地图变暗,您可以通过 Google 地图的样式 API 直接将颜色叠加应用到地图,而不是使用对所有内容着色的框叠加。

第 1 步:创建地图样式 JSON 在 res/raw 目录中创建一个定义较暗地图样式的 JSON 文件(例如,map_style.json)。这是深色风格的基本示例:

第 2 步:在代码中应用样式 在您的 GoogleMap 调用中,使用 MapProperties 加载并应用此样式:

val context = LocalContext.current

val mapProperties = remember {
    MapProperties(
        mapStyleOptions = MapStyleOptions.loadRawResourceStyle(context, R.raw.map_style)
    )
}

Box(
    modifier = Modifier
        .fillMaxSize()
        .padding(contentPadding)
) {
    GoogleMap(
        modifier = Modifier.fillMaxSize(),
        googleMapOptionsFactory = {
            GoogleMapOptions().mapId(MapDefaults.mapId)
        },
        cameraPositionState = cameraPositionState,
        properties = mapProperties,
        uiSettings = style.mapUiSettings,
        onMapLoaded = {
            onMapLoaded()
        }
    ) {
       // Markers remain unaffected by the map style
    }
}

这种方法只会使地图本身变暗,同时保持标记明亮,因为它们不会受到地图样式的影响。

© www.soinside.com 2019 - 2024. All rights reserved.