0

我有一个在地图上显示点的应用程序。当前用户有 3 个地图叠加层 (1);(2) 为用户的朋友/联系人;(3) 为他人。我试图允许用户选择地图上显示的内容。目标是允许他们显示每个人(用户、朋友和其他人)或过滤地图以仅显示他们的朋友/联系人。

我可以很好地将不同的叠加层添加到地图中。问题是删除覆盖。

我在这里尝试了这种方法——如何刷新活动?地图视图刷新失败- 建议使用以下代码按索引删除项目:

private void showFriends(){

mapOverlays = mapView.getOverlays();
int j = othersMapOverlay.size();
for(int i = friendsMapOverlay.size; i < j; i++){
    mapOverlays.remove(i);
}
mapView.invalidate();
} 

我的策略是创建所有覆盖的列表 - mapOverlays,然后使用 for 循环,从第一个覆盖的末尾开始,friendsMapOverlay,然后删除,直到我到达第二个地图覆盖的末尾,othersMapOverlay。

那没有用。

我还尝试使用两者来删除列表对象

mapOverlays.remove(othersMapOverlay);

或者

mapView.getOverlays().remove(othersMapOverlay);

但这些都不起作用。知道如何解决这个问题吗?

4

1 回答 1

0

最终使用了以下内容。它并没有真正隐藏或删除覆盖,只是清除和重绘。这必须比我想做的效率低 - 即只是删除那里的东西,但它有效。. . 目前。

private void showEveryone(){

    mapOverlays = mapView.getOverlays();
    mapOverlays.clear();
    mapView.invalidate();
    JSONArray friends = buildFriendList();
    JSONArray others = buildOthersList();
    getUserDataForMap(friends, "friends");
    getUserDataForMap(others, "others");

}
于 2012-12-14T22:58:48.190 回答