【发布时间】:2013-10-05 05:57:20
【问题描述】:
在 Android 地图上可以使用什么颜色进行标记?
有几种颜色,颜色的代码怎么写?
【问题讨论】:
标签: android colors google-maps-android-api-2 marker
在 Android 地图上可以使用什么颜色进行标记?
有几种颜色,颜色的代码怎么写?
【问题讨论】:
标签: android colors google-maps-android-api-2 marker
这是我用来根据给定的String 颜色为标记生成动态Hue 颜色的方法。
可能对某人有用:)
Marker melbourne = mMap.addMarker(new MarkerOptions().position(MELBOURNE)
.icon(getMarkerIcon("#ff2299")));
// method definition
public BitmapDescriptor getMarkerIcon(String color) {
float[] hsv = new float[3];
Color.colorToHSV(Color.parseColor(color), hsv);
return BitmapDescriptorFactory.defaultMarker(hsv[0]);
}
【讨论】:
这是制作默认标记的方法
Marker melbourne = mMap.addMarker(new MarkerOptions().position(MELBOURNE)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
这些是你可以使用的常量
float HUE_AZURE
float HUE_BLUE
float HUE_CYAN
float HUE_GREEN
float HUE_MAGENTA
float HUE_ORANGE
float HUE_RED
float HUE_ROSE
float HUE_VIOLET
float HUE_YELLOW
【讨论】:
defaultMarker() 方法采用float,因此您可以提供[0...360] 范围内的任何值。
BitmapDescriptorFactory.defaultMarker(float hue) 着色。如何通过仅考虑 HSV 的色调来获得合适的颜色?要么谷歌糟糕地实现了着色功能,要么我大错特错。我真的希望不是前者。无论哪种方式都太痛苦了!
详细解答!
float hue = 120; //(Range: 0 to 360)
Marker melbourne = mMap.addMarker(new MarkerOptions().position(MELBOURNE)
.icon(BitmapDescriptorFactory
.defaultMarker(hue)));
您可以给出从 0 到 360 范围内的任何色调值,这里定义了一些常量 (https://developers.google.com/android/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory)
最好的方法!找到所需的色调(与您所需的颜色相匹配)。
在 Paint.Net/Photoshop 编辑器(或其他)中打开此图像
转到照片编辑器中的色调选项并滑动色调栏并记下最佳匹配的色调值。
对于Paint.net(调整 -> 色相/饱和度)
对于 Photoshop(摄影 -> 调整 -> 色相/饱和度)
如果值大于 0,则使用精确值 ,如果值小于0,取postivie(绝对值)的值,加到180中并使用结果值。
【讨论】:
你想要的颜色上的符号!
我几天来一直在寻找这个答案,这是创建自定义标记的正确且简单的方法:
'http://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=xxx%7c5680FC%7c000000&.png' 其中 xxx 是文本,5680fc 是十六进制颜色代码,000000 是文本的十六进制颜色代码。
这些标记是完全动态的,您可以创建任何您想要的气球图标。只需更改 URL。
【讨论】:
没有人提及的简单解释:
设置标记颜色时,实际上是设置了HSV(x, 100%, 100%) 的x 值
BitmapDescriptorFactory.defaultMarker(x) 中使用的x 值
以上内容也意味着您不能以这种方式设置任何您希望的标记颜色。要将任何颜色表示为 HSV,还应更改 (S) 和 (V),但 Google Maps API 不允许将其用作默认标记 - 它使用常量值“100%”。
如果您想查看标记的外观,请打开任何 HSV 转换器(在线版本 here),将 (H)ue 设置为您在上面得到的 x 值、(S)饱和度和 (V)相当于 100%。
注意:
或者,您可以使用编码完全相同颜色的HSL(x, 100%, 50%) 而不是HSV(x, 100%, 100%)。
【讨论】: