有没有办法在运行时更改Google Maps Android API v2标记的图标而不删除/重新添加标记我想要更改其图标?我可以对其应用变换(如旋转)吗?
感谢。
答案 0 :(得分:23)
我可以在更新到Google Play Services Rev 7
后立即更改标记图标,现在
Marker.setIcon(BitmapDescriptor icon)
是可用的,以前我删除并添加标记来改变它的颜色。
答案 1 :(得分:3)
docs在这个问题上非常明确 -
Icon A bitmap that's displayed in place of the default marker image. You can't change the icon once you've created the marker.
如果您想要更改标记,您可以选择一些选项。一个是,正如您所注意到的,删除标记并添加另一个标记。另一种是在同一位置放置多个标记,并在任何给定时间切换哪一个可见。
我可以对其应用转换(如旋转)吗?
您可以将您喜欢的任何转换应用到之前的图像上,然后使用它来创建标记。
答案 2 :(得分:3)
目前,您无法在运行时更改标记,也无法对其应用旋转。
你可以使用变通方法 - 我正在使用BlinkingMarker类,我必须在运行时调整标记图像的不透明度。
现在唯一的解决方案是创建具有不同旋转的位图,然后定期添加/删除它们。此解决方案的问题是添加/删除标记需要大量内存分配,因此会导致不断的垃圾回收。更好,更顺畅的解决方法是预先创建所有图像,并立即将所有图像添加到地图中。之后,您可以使用Marker.setVisible(boolean)
功能显示您当前需要的功能。
警告:在执行此操作之前测量位图,因为添加大量大位图会导致应用程序的内存大小增大。
您可以在此处查看我的解决方法: https://github.com/balazsbalazs/blinking-marker-mapsv2
这是闪烁的标记(更改位图的不透明度),但在同一行上,您可以应用任何类型的转换。
答案 3 :(得分:3)
在September 2013 Google Maps Android API v2 release中,现在有一种新的setRotation()
标记方法,以及一种新的setFlat()
方法。
以下是Google对新功能的描述:
为您的标记提供方向感
我们添加了一个标记旋转属性,允许您围绕它的锚点旋转标记。新的平面属性允许您使标记平放在地图表面上,而不是弹出以面向相机。当地图旋转或倾斜时,这两个新属性对于指示罗盘方向特别有用。
这是描述新功能的an article。
答案 4 :(得分:2)
要在运行时更改选定的标记图标,只需添加
@Override
public boolean onMarkerClick(Marker marker) {
Marker.setIcon (BitmapDescriptor icon);
}