【问题标题】:Android map marker color?Android地图标记颜色?
【发布时间】:2013-10-05 05:57:20
【问题描述】:

在 Android 地图上可以使用什么颜色进行标记?
有几种颜色,颜色的代码怎么写?

【问题讨论】:

    标签: android colors google-maps-android-api-2 marker


    【解决方案1】:

    这是我用来根据给定的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]);
    }
    

    【讨论】:

    • 但它创建浅色和实际颜色较暗
    【解决方案2】:

    这是制作默认标记的方法

    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] 范围内的任何值。
    • 如果从0到360,哪一个是灰色的?
    • 根据Google Maps Android SDK 的文档,只有hue 可以用来给标记BitmapDescriptorFactory.defaultMarker(float hue) 着色。如何通过仅考虑 HSV 的色调来获得合适的颜色?要么谷歌糟糕地实现了着色功能,要么我大错特错。我真的希望不是前者。无论哪种方式都太痛苦了!
    • @sunlover3 RGB 的 HSB/HSL 编码中没有灰度值
    【解决方案3】:

    详细解答!

    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中并使用结果值。

    【讨论】:

    【解决方案4】:

    你想要的颜色上的符号!

    我几天来一直在寻找这个答案,这是创建自定义标记的正确且简单的方法:

    'http://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=xxx%7c5680FC%7c000000&.png' 其中 xxx 是文本,5680fc 是十六进制颜色代码,000000 是文本的十六进制颜色代码。

    这些标记是完全动态的,您可以创建任何您想要的气球图标。只需更改 URL。

    【讨论】:

      【解决方案5】:

      没有人提及的简单解释:

      设置标记颜色时,实际上是设置了HSV(x, 100%, 100%)x

      • 打开任何 HEX/RGB-to-HSV 转换器,在线版本here
      • 将 HEX/RGB 转换为 HSV
      • (H)ue 是您在BitmapDescriptorFactory.defaultMarker(x) 中使用的x
      • (S)饱和度将由 Google Maps API 设置为 100%
      • (V)值将由 Google Maps API 设置为 100%

      以上内容也意味着您不能以这种方式设置任何您希望的标记颜色。要将任何颜色表示为 HSV,还应更改 (S) 和 (V),但 Google Maps API 不允许将其用作默认标记 - 它使用常量值“100%”。

      如果您想查看标记的外观,请打开任何 HSV 转换器(在线版本 here),将 (H)ue 设置为您在上面得到的 x 值、(S)饱和度和 (V)相当于 100%。

      注意: 或者,您可以使用编码完全相同颜色的HSL(x, 100%, 50%) 而不是HSV(x, 100%, 100%)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-27
        • 1970-01-01
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 2019-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多