【问题标题】:How to change the google maps marker color to grey in android如何在android中将谷歌地图标记颜色更改为灰色
【发布时间】:2018-03-29 23:57:18
【问题描述】:
我已经知道的事情
- 1) 创建 MarkerOptions 对象。
- 2) 使用
object.icon(BitmapDescriptorFactory.defaultMarker(<color value>));
- 3) 颜色值是色调颜色值。 Google 指定了一些标准颜色值(HUE.BLUE、HUE.AZURE 等)
- 4) 要获得所需的颜色,请选择 0 到 360 之间的值。0 为红色,90 为青色,270 为紫色
我需要什么?
灰色的这个特定的浮点值
我的研究:Color wheel
灰色不包括在 HUE 颜色中。它在音调中。那么如何访问色调中的颜色值。
【问题讨论】:
标签:
android
colors
google-maps-markers
【解决方案1】:
没有灰色可用作色调。所以一种方法是抓取一个标记 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));
}
【解决方案2】:
对于我们这些真正想要使用现有色调颜色的人,您可以执行以下操作:
fun MapFragment.addGreenMarker(latLng: LatLng) {
getMap()?.apply {
addMarker(
MarkerOptions()
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
.position(latLng)
.draggable(true)
)
}
}
【解决方案3】:
- 查找 Google 现有的地图图标之一 - 可能是 .png。
- 将其安装到您的系统中并使用您的图形程序进行更改,即。 GIMP。不要失去它的透明度。
- 根据 Android Studio 的命名规则保存它 - 即。没有连字符。
- 在 Android Studio 中,右键单击 res/drawable 文件夹。
- 点击在资源管理器中显示。
- 进入drawable文件夹。
- 将新图标复制/粘贴到 res/drawable 文件夹中 - 不用担心它是 .png 文件,而文件夹中的其他图标是 .xml 文件。
- 关闭资源管理器窗口。
- 要在您的应用程序中使用 - 假设文件名为 gray_dot.png:
mMarkerOptions.position(beachCoord).title("marker title").sn-p("marker info").icon(BitmapDescriptorFactory.fromResource(R.drawable.gray_dot));
当您输入 R.drawable.gr... - 它显示时没有 .png 扩展名。
运行您的应用。基本测试表明,图标大小在平板电脑和手机上运行良好,无需担心分辨率不同。我将进行更多测试,以确保这对于更高的分辨率仍然适用。