我的應用程序搜索和可視化相同的覆蓋圖。但是,在接下來的搜索中,舊的疊加並不清楚。我必須嘗試使用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. 地圖覆蓋
- 4. 刪除iphone上的mapkit覆蓋圖
- 5. X11:繪製覆蓋圖/從覆蓋圖中移除繪圖
- 6. 谷歌地圖API - GStreetviewPanorama - 刪除地址覆蓋
- 7. 從谷歌地圖中刪除KML覆蓋
- 8. Android,地圖覆蓋
- 9. Android地圖覆蓋
- 10. 階覆蓋地圖
- 11. 更新地圖覆蓋圖
- 12. 覆蓋地圖,而R中
- 13. 移除3個地圖覆蓋圖中的1個
- 14. 谷歌地圖多邊形/覆蓋 - 刪除
- 15. 谷歌地圖V3刪除折線覆蓋
- 16. 刪除谷歌地圖圈功能內覆蓋
- 17. 在R中的圖像地圖上覆蓋世界地圖
- 18. 覆蓋地圖上的圖像
- 19. 覆蓋整個Google地圖的圖像
- 20. 刪除平坦圖像上的半透明覆蓋圖
- 21. R:覆蓋圖上的覆蓋圖
- 22. Android覆蓋整個地圖
- 23. android地圖覆蓋手繪
- 24. Android地圖覆蓋問題
- 25. Javascript:覆蓋地圖功能
- 26. 谷歌地圖與覆蓋
- 27. 谷歌地圖覆蓋
- 28. 谷歌地圖覆蓋
- 29. 移動地圖覆蓋
- 30. 安卓地圖覆蓋
記得標記答案,如果它解決了您的問題。 – hooked82