0

我目前正在开发一个使用 MapView 并向其添加叠加层的应用程序。基本上,在任何一个特定时间,覆盖列表都不应超过两个。

这是我试图做的......

我扩展了 ItemizedOverlay 类 (MyFriendOverlay),然后在该扩展类中创建了一个私有 ArrayList 对象,我将把叠加层附加到该对象。然而; 我遇到了一个不确定如何解决的问题。如果你看这段代码:

ImageView mapMarker = new ImageView(getApplicationContext()); mapMarker.setImageResource(R.drawable.markertrp);

myPointsToShow = new myFriendOverlay(mapMarker.getDrawable(), getApplicationContext());

正如这里可以注意到的,我创建了一个 ImageView,其中包含基于我的 drawable 的图标。在此之后,我从 ItemizedOverlay 获得了我的扩展类。在构造函数中,它有两个参数,drawable 和 context。

据我所知,下面的构造函数是必需的(也许可以修改):

public myFriendOverlay(Drawable defaultMarker, Context context)

这里的问题是我不断创建 myPointsToShow 的新实例,这是一个问题,因为我有一个要在扩展类中使用的 ArrayList,因此我可以直接控制覆盖。通过每次实例化一个新的,我并没有真正添加到列表本身。

简而言之:

我想要的只是让我的应用程序有两个点(A 和 B),如果检测到 B 的新位置,则从覆盖列表中删除 B,并将其替换为新位置。A 也一样。为了简化它,我想将索引 0 附加到 A 并将索引 1 附加到 B,这样它就不会跨越两个点。

由于必要的构造函数的问题,我无法为此提出解决方案,也许我想得太苦了......

请提供任何反馈!:)

谢谢阅读。

4

1 回答 1

1

根据我的经验,我所做的如下:

  • 为我要展示的每种图像创建一个项目叠加层。
  • 如果每个叠加层的项目列表不是很长,我将它传递给一个意图。

顺便说一句,您需要R.drawable.something用于叠加层。您无需创建ImageView.

我一直在使用这个 android-library 来制作地图:android-mapviewballoons。看看这个!

于 2010-12-19T13:57:14.270 回答