我目前正在开发一个使用MapView并为其添加叠加层的应用程序。基本上在任何一个给定时间,覆盖列表不应超过两个。
这是我试图做的事情......
我已经扩展了ItemizedOverlay类(MyFriendOverlay),然后在扩展类中创建了一个私有ArrayList对象,我将这些对象附加到。然而;我遇到了一个问题,我不确定如何修复。如果你看一下这段代码:
ImageView mapMarker = new ImageView(getApplicationContext());
mapMarker.setImageResource(R.drawable.markertrp);
myPointsToShow = new myFriendOverlay(mapMarker.getDrawable(), getApplicationContext());
正如我在这里可以注意到的,我创建了一个带有基于我的drawable图标的ImageView。在此之后,我从ItemizedOverlay获得了扩展类。在构造函数中,它采用drawable和context两个参数。
据我所知,下面的构造函数是必需的(也许可以修改):
public myFriendOverlay(Drawable defaultMarker, Context context)
这里的问题是我一直在创建myPointsToShow的新实例,这是一个问题,因为我有一个我想在扩展类中使用的ArrayList,所以我可以直接控制叠加层。通过每次实例化一个新的,我并没有真正添加到列表本身。
简而言之:
我想要的只是我的应用程序有两个点(A和B),如果检测到B的新位置,则从覆盖列表中删除B,并将其替换为新位置。 A也一样。为了简化它,我想将索引0附加到A并将索引1附加到B,这样它就不会跨越两个点。
由于必要的构造函数的问题,我无法为此提出解决方案,也许我对它的思考太过分了......
请提供任何反馈! :)
感谢阅读。
答案 0 :(得分:1)
根据我的经验,我的工作如下:
顺便说一句,您需要使用R.drawable.something
作为叠加层。您无需创建ImageView
。
我一直在使用这个android-library for maps:android-mapviewballoons。看看吧!