繁体   English   中英

如何在android中将谷歌地图标记颜色更改为灰色

[英]How to change the google maps marker color to grey in android

我已经知道的事情

  • 1) 创建 MarkerOptions 对象。
  • 2) 使用object.icon(BitmapDescriptorFactory.defaultMarker(<color value>));
  • 3) 颜色值是色调颜色值。 Google 指定了一些标准颜色值(HUE.BLUE、HUE.AZURE 等)
  • 4) 要获得所需的颜色,请选择 0 到 360 之间的值。0 是红色,90 是青色,270 是紫色

我需要什么? 灰色的这个特定浮点值

我的研究: 色轮灰色不包含在 HUE 颜色中。 它在音调中。 那么如何在 Tones 中访问颜色值。

没有灰色可用作色调。 所以一种方法是抓取一个标记 png 并修改为灰色(外部),就像在这个快照中一样(这是所有的色调加上顶部的特殊灰色)。 从资源创建 BitmapDescriptor:

(对于灰色 png,将透明颜色设置为白色。)

在此处输入图片说明

相关代码(对于答案不是必需的):

public void createMarkers() {
    LatLng pos = new LatLng(38.547279, -121.46101);
    for (int i = 0; i < 360; i++) {
        mMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.defaultMarker(i)).position(pos));
        double lat = pos.latitude;
        double lng = pos.longitude;
        lng += 0.01;
        if ((i + 1) % 40 == 0) {
            lng = -121.46101;
            lat = pos.latitude + 0.01;
        }
        pos = new LatLng(lat,lng);

    }
    double lat = pos.latitude + 0.01;
    pos = new LatLng(lat, pos.longitude);
    BitmapDescriptor bd = BitmapDescriptorFactory.fromResource(R.drawable.ic_map_marker);
    mMap.addMarker(new MarkerOptions().icon(bd).position(pos));

}

对于我们这些真正想要使用现有色调颜色的人,您可以执行以下操作:


fun MapFragment.addGreenMarker(latLng: LatLng) {
    getMap()?.apply {
        addMarker(
            MarkerOptions()
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
                .position(latLng)
                .draggable(true)
        )
    }
}

  1. 找到 Google 现有的地图图标之一 - 可能是 .png。
  2. 把它放到你的系统上并使用你的图形程序来改变它,即。 GIMP。 不要失去它的透明度。
  3. 根据 Android Studio 的命名规则保存 - 即。 没有连字符。
  4. 在 Android Studio 中,右键单击 res/drawable 文件夹。
  5. 单击在资源管理器中显示。
  6. 进入可绘制文件夹。
  7. 将新图标复制/粘贴到 res/drawable 文件夹中 - 不要担心它是 .png 文件,而文件夹中的其他文件是 .xml 文件。
  8. 关闭资源管理器窗口。
  9. 要在您的应用程序中使用 - 假设文件名为gray_dot.pngmMarkerOptions.position(beachCoord).title("marker title").snippet("marker info").icon(BitmapDescriptorFactory.fromResource(R.drawable.gray_dot) );

当您输入R.drawable.gr... 时- 它显示没有 .png 扩展名。

运行您的应用程序。 基本测试表明,图标大小在平板电脑和手机上都可以正常工作,无需担心不同的分辨率。 我将进行更多测试,以确保在更高分辨率下仍然如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM