我的应用程序搜索和可视化相同的覆盖图。但是,在接下来的搜索中,旧的叠加并不清楚。我必须尝试使用map.getOverlays().clear();
,但它也会删除MyLocationOverlay
的叠加层。有一种只删除相同覆盖的方法?删除地图中的覆盖图
回答
当您添加叠加到地图中,您可以将其添加到某个位置
overlays.add(position, overlay_object);
然后,当你需要删除特定的叠加,就可以以同样的方式将其删除
overlays.remove(position);
我知道它有点太晚了,但因为我想出了一个解决方案,帮助我,我想分享它,以便它可以帮助程序员在未来..
@ hooked82:问题与做ing只是
overlays.remove(position)
是它的一个列表。所以当你从列表中删除一个项目时,列表中这个项目右边的每个项目都会向左移动一个位置,这最终会弄乱你的位置,这使得全部跟踪它们变得非常繁琐时间。
在我的一个项目中,我面临同样的问题。由于我在某些更新中添加和删除叠加层,经过一段时间后,很难跟踪列表中的叠加层位置。
这是我为解决问题所做的工作,迄今为止没有任何问题。
第1步:创建自定义覆盖类
public class MyOverlay extends Overlay
{
private String overlayUUID;
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
-- do what you need to do here --
}
public String getOverlayUUID()
{
return overlayUUID
}
}
第2步:在MapClass,你处理覆盖。请确保mapOverlays列表是MapView类的全局列表,您添加所有mapOverlays
List<Overlay> mapOverlays = mapView.getOverlays();
public void removeChosenOverlay(String overlayUUID)
{
for(int i=0; i<mapOverlays.size(); i++)
{
String className = mapOverlays.get(i).getClass().getSimpleName();
if(className.equals("MyOverlay"))
{
MyOverlay myOverlay = (MyOverlay) mapOverlays.get(i);
if((myOverlay != null) && (myOverlay.getOverlayUUID.equals(overlayUUID)))
{
mapOverlays.remove(i);
mapView.invalidate()
break;
}
}
}
}
通过上述方法,可以唯一地标识一个UUID每个覆盖(在我的情况下,它是一个字符串,但是您可以以您希望的任何格式自定义创建UUID),并且可以从覆盖列表中成功删除相应的覆盖项目,而不必担心它们在列表中的相对位置。
我希望它可以帮助别人面对同样的问题,唯一识别叠加层。
并请标记答案,如果它有助于任何人在未来..干杯..! – vivek86
你可以用计数器的帮助和另一参考overlayItem这样做是为了节省您要在我的情况下反删除 旧覆盖是current_overlay_counter和old_overlay_item第一获得旧覆盖 参考调用计数器为0,因此没有覆盖删除
public void getcurrentPostion()
{
GeoPoint gpoint=new GeoPoint((int)((current_location.getLatitude())*1E6),((int)((current_location.getLongitude())*1E6)));
OverlayItem overlayitem = new OverlayItem(gpoint, "Hola, Mundo!", "I'm in Mexico City!");
mapOverlays = map.getOverlays();
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
if(current_overlay_counter>0)
{
System.out.println("deleting overlay");
itemizedoverlay.removeOverlay(old_overlay_item);
map.invalidate();
}
old_overlay_item=overlayitem;
current_overlay_counter++;
map_controller.setCenter(gpoint);
}
你需要一两件事,一个方法来去除覆盖在你的ItemizedOverlay类实现
此法德es您想要删除的覆盖物的引用
public void removeOverlay(OverlayItem overlay){
mOverlays.remove(overlay);
System.out.println("removeOverlay is called");
populate();
}
- 1. 从mapView删除覆盖图
- 2. 如何从传单/地图盒地图切片中删除圆形覆盖图?
- 3. 删除iphone上的mapkit覆盖图
- 4. X11:绘制覆盖图/从覆盖图中移除绘图
- 5. 谷歌地图API - GStreetviewPanorama - 删除地址覆盖
- 6. 从谷歌地图中删除KML覆盖
- 7. Android,地图覆盖
- 8. Android地图覆盖
- 9. 谷歌地图V3删除折线覆盖
- 10. 在R中的图像地图上覆盖世界地图
- 11. 覆盖整个Google地图的图像
- 12. 删除平坦图像上的半透明覆盖图
- 13. 谷歌地图与覆盖
- 14. 谷歌地图覆盖
- 15. 安卓地图覆盖
- 16. Android地图覆盖问题
- 17. Android覆盖整个地图
- 18. 谷歌地图覆盖
- 19. 谷歌地图覆盖层
- 20. 移动地图覆盖
- 21. Android中更高效的地图覆盖
- 22. 如何删除Android修改的Holo按钮中的覆盖图?
- 23. 覆盖缩略图和删除图像按钮?
- 24. 谷歌地图:更新图片覆盖
- 25. 谷歌地图透明图像覆盖
- 26. 预加载谷歌地图覆盖图
- 27. 谷歌地图视图教程 - 覆盖
- 28. 谷歌地图简单图案覆盖
- 29. 在地图上绘制覆盖图
- 30. 在地图上覆盖散点图(img)
记得标记答案,如果它解决了您的问题。 – hooked82