我在 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地图中这样-
只有地图是暗的,标记是亮的。
要在不影响标记的情况下使 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
}
}
这种方法只会使地图本身变暗,同时保持标记明亮,因为它们不会受到地图样式的影响。