You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何将Google Maps标记颜色改为灰色?

获取Google Maps Marker灰色图标的解决方案

你提到的点特别准确——Google Maps Android SDK里的BitmapDescriptorFactory.defaultMarker(float hue)确实只支持设置色相(Hue),而灰色属于无彩色(没有明确的色相,只有明度/色调Tone),所以直接用HUE值是没法生成灰色标记的。下面给你两个实用的解决办法:

方法一:自定义灰色Bitmap作为Marker图标

这是最稳妥、兼容性最好的方式,直接创建一个灰色的Bitmap来替代默认Marker:

// 创建一个100x100的灰色Bitmap(尺寸可按需调整)
Bitmap grayBitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(grayBitmap);
// 填充灰色,也可以用具体色值比如Color.parseColor("#777777")调整深浅
canvas.drawColor(Color.GRAY);

// 转换成Marker可用的BitmapDescriptor
BitmapDescriptor grayMarkerIcon = BitmapDescriptorFactory.fromBitmap(grayBitmap);

// 应用到MarkerOptions
MarkerOptions markerOptions = new MarkerOptions()
        .icon(grayMarkerIcon)
        .position(new LatLng(yourLatitude, yourLongitude));

如果需要不同深浅的灰色,只需要替换Color.GRAY为对应的十六进制色值即可,比如#EEEEEE是浅灰,#333333是深灰。

方法二:通过调整饱和度生成灰色(需注意SDK兼容性)

如果你更倾向于使用默认Marker的样式,其实可以利用“无彩色饱和度为0”的特性,使用fromHueAndSaturation方法(这个方法在较新的SDK版本中支持,建议先确认你的项目SDK版本):

// 色相任意(饱和度为0时,色相不影响最终颜色),饱和度设为0即可得到无彩色(灰色系)
BitmapDescriptor grayMarkerIcon = BitmapDescriptorFactory.fromHueAndSaturation(0, 0);
MarkerOptions markerOptions = new MarkerOptions().icon(grayMarkerIcon);

不过这个方法生成的灰色可能和自定义Bitmap的质感略有差异,建议实际测试后再决定是否使用。

额外提醒

你之前提到的0-360的HUE值对应的都是有彩色(带有明确色彩倾向的颜色),而灰色、白色、黑色这类无彩色没有对应的HUE值,所以无法通过defaultMarker(float hue)直接生成,必须借助上面两种方法。

内容的提问来源于stack exchange,提问作者d27saurabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:04:45