将地图标记设置为自定义颜色 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的主要内容,如果未能解决你的问题,请参考以下文章