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

Posted

技术标签:

【中文标题】将地图标记设置为自定义颜色 Android【英文标题】:Set map marker to a custom color Android 【发布时间】:2014-12-22 17:18:05 【问题描述】:

我正在制作一个应用程序,可以在某些点向地图添加图钉。我希望我的图钉的颜色与我们应用的主题颜色相匹配。对不起,我真的是菜鸟

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)));不起作用。它不允许我在这里插入自定义颜色。我怎样才能做到这一点?谢谢:)

【问题讨论】:

确实是个好问题,但似乎解决方案是设计标记图像并使用它。 好的,谢谢。我就这么做 【参考方案1】:

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

(Hue) 值必须大于等于 0 且小于 360

如果您知道应用主题的 Hex 或 RGB 值,则需要进行一些计算(请参阅example)或简单地使用一些free online converter。在您的情况下,色调值为 47。

另外,无需在代码中设置 .icon() 属性两次。

【讨论】:

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

我创建了这个简单的方法来获取任何颜色的标记。

 public BitmapDescriptor getMarkerIcon(int color) 
    float[] hsv = new float[3];
    Color.colorToHSV(color, hsv);
    return BitmapDescriptorFactory.defaultMarker(hsv[0]);

【讨论】:

以上是关于将地图标记设置为自定义颜色 Android的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 谷歌地图更改标记颜色

用于 clusterItems 的 Android 谷歌地图 markerClickListener

带有自定义标记的 Android 地图(标记上的文本)

Echarts 地图 省份的颜色自定义如何设置?

Echarts 地图 省份的颜色自定义如何设置?

百度地图坐标点的颜色能显示不同颜色吗