将地图标记设置为自定义颜色 Android

8

我正在开发一个应用程序,在地图上特定的位置添加标记。我希望我的标记颜色与我们应用程序的主题颜色匹配。抱歉,我真的很菜。

int color = Color.rgb(255, 201, 14);
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
final LatLng PERTH = new LatLng(40, -80);
Marker perth = mMap.addMarker(new MarkerOptions()
  .position(PERTH)
  .title("MY PIN")
  .snippet("MAGGIE EATS SNAKE SKINS")
  .draggable(true)
  .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin))
  .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.color)));

.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.color)));这段代码无法正常运行。我想要插入一种自定义的颜色,该怎么做呢?谢谢:)


确实是一个好问题,但似乎解决方案是设计标记图像并使用它。 - Ashish Tiwari
好的,谢谢。我会这样做的。 - abbyt22
2个回答

7
defaultMarker() 方法允许设置自定义颜色,但仅通过提供色调值。根据Android文档:

(色调)值必须大于或等于0且小于360

如果您知道应用程序主题的十六进制或RGB值,则需要进行一些计算(请参见示例),或者简单地使用一些免费在线转换器。在您的情况下,色调值将为47。
此外,在您的代码中不需要两次设置.icon()属性。

当我使用转换器获取我的颜色(#678E00)的HUE值时,它给了我3个值(76,100,27.8),但我只能向BitmapDescriptorFactory提供1个数字。你知道我该怎么做吗? - Analizer
在您的情况下,您需要将HEX转换为HUE,例如使用此工具。对我来说似乎奇怪的是,我得到了#678E00的不同值(103,142,0)。 - Leszek Jasek

1
我已经创建了这个简单的方法来获取任何颜色的标记。
 public BitmapDescriptor getMarkerIcon(int color) {
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    return BitmapDescriptorFactory.defaultMarker(hsv[0]);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接