我有一个在地图上显示点的应用。当前用户有3个地图叠加(1); (2)为用户的朋友/联系人; (3)对于其他人。我试图允许使用选择地图上显示的内容。目标是允许他们显示每个人(用户,朋友和其他人)或过滤地图以仅显示他们的朋友/联系人。
我可以将不同的叠加添加到地图中。问题是删除叠加层。
我在这里尝试了这种方法 - How to refresh an activity? Map View refresh fails - 建议使用以下代码按索引删除项目:
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开始,然后删除,直到我到达第二个贴图叠加层的末尾,其他MapOverlay。
那不起作用。
我还尝试使用
删除列表对象mapOverlays.remove(othersMapOverlay);
或
mapView.getOverlays().remove(othersMapOverlay);
但这些都没有成功。知道如何解决这个问题吗?
答案 0 :(得分:0)
使用以下内容结束。它并没有真正隐藏或删除叠加只是清除和重绘。这必须比我想做的效率低 - 即只是移除那些但它有效。 。 。目前。
private void showEveryone(){
mapOverlays = mapView.getOverlays();
mapOverlays.clear();
mapView.invalidate();
JSONArray friends = buildFriendList();
JSONArray others = buildOthersList();
getUserDataForMap(friends, "friends");
getUserDataForMap(others, "others");
}