在运行时更改标记图标

时间:2013-01-22 00:53:56

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

有没有办法在运行时更改Google Maps Android API v2标记的图标而不删除/重新添加标记我想要更改其图标?我可以对其应用变换(如旋转)吗?

感谢。

5 个答案:

答案 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);
       }