我正在使用包含 OverlayItems 列表的 ItemizedOverlay 在 MapView 顶部显示标记。我的问题是,当 OverlayItem 使用为覆盖定义的默认标记时,它的 getMarker() 方法返回 null。还有其他方法可以获得该标记图像吗?我想看看是否可以在 onTap() 期间对其进行动画处理。
我在地图上显示了一堆标记,其中许多使用相同的图像,所以我认为最好使用覆盖的默认图像来节省内存。对于这个应用程序,可能会为给定的叠加显示超过 100 个标记。
我正在使用包含 OverlayItems 列表的 ItemizedOverlay 在 MapView 顶部显示标记。我的问题是,当 OverlayItem 使用为覆盖定义的默认标记时,它的 getMarker() 方法返回 null。还有其他方法可以获得该标记图像吗?我想看看是否可以在 onTap() 期间对其进行动画处理。
我在地图上显示了一堆标记,其中许多使用相同的图像,所以我认为最好使用覆盖的默认图像来节省内存。对于这个应用程序,可能会为给定的叠加显示超过 100 个标记。
你有几种不同的方法来解决这个问题。我正在展示我所知道的最简单的一个,如果它不能解决您的问题,请告诉我。
public class MyItemizedNewOverlay extends ItemizedOverlay<OverlayNewItem> {
private ArrayList<OverlayNewItem> myOverlays ;
Drawable defaultMarker;
Context context;
public MyItemizedNewOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
this.defaultMarker = defaultMarker;
this.context = context;
myOverlays = new ArrayList<OverlayNewItem>();
populate();
}
. . .
}
有了这个,您可以在代码中为 onTap() 使用默认标记