2012-06-06 30 views
0

我的問題如下。從mapview中刪除特定的疊加層

我正在創建多個分項疊加。 (因爲每個覆蓋都會得到不同的drawable) 我自定義了分項疊加層類,但是當我將它添加到mapview疊加層時,類將轉換爲疊加層類。 使情況變得更糟,我有3個班級在同一張地圖上創建疊加層。每個類代表地圖上的一個項目,它背後有自己的智慧。

我現在遇到的問題是我想要刪除疊加層,但我不能確定索引是否插入了它,也是我嘗試刪除它時的索引。 (其他類可能同時插入了疊加層)

這些類是自我更新的,所以我不希望從主類中觸發更新或刪除事件的解決方案。 (整點是添加一個類,忘了它)

所以我的問題是:我怎麼能確定哪一層是什麼時候我想調用刪除該層。我認爲這些信息是可用的,但我不知道如何去做。 這是我使用添加的覆蓋

OverlayItem overlayitem = new OverlayItem(p,myNaam ,myOmschrijving); 

    LocationOverlay = new MyLocationOverlay(drawable, myContext); 

    LocationOverlay.SetLocation(i,overlayitem); 

    myOverlays.add(LocationOverlay); 
+0

問題仍然存在,但我可能通過使用setmarker方法找到了解決方法。仍在測試 –

回答

0

您不必刪除特定層的代碼。您可以刪除其參考指定的疊加層(例如,myOverlay)。

LocationOverlay myOverlay = new MyLocationOverlay(drawable, myContext); //you forgot the name of variable

mapView.getOverlays().remove(myOverlay);

+0

問題是我沒有參考。我沒有忘記這個變量,它是在其他地方聲明的。 myoverlays是你添加一個itemizedoverlay的疊加列表。所以真正的問題是,我怎麼能得到一個參考,當我沒有?我認爲我將不得不以某種方式檢查疊加層的內容,以決定哪個是哪個,或者保留一個疊加層列表。但是,如果我不知道如何引用覆蓋圖,一旦將它插入到地圖視圖中,我又如何獲得覆蓋圖的列表 –

+0

爲什麼你沒有?你不是自己創建這個覆蓋層嗎?代碼是否由其他人創建?如果沒有,你可以創建你的引用(只要把它保留在類範圍內,而不是函數範圍,如果你想用它來避免函數)。如果你說你在其他地方聲明瞭引用,比這行'LocationOverlay = new MyLocationOverlay(drawable,myContext);'已損壞,因爲它假定LocationOverlay是變量的名稱,你可能是指'LocationOverlay'類的名字。 –

+0

我明白你的困惑。我刪除了代碼,因爲它沒有幫助。 發生什麼事是,當你在地圖視圖中爲集合添加一個疊加層時,就像將一個球放在一個裝滿球的碗中。當你從碗中拿出一個球時,你可能會得到同樣的一個球,但是你不能確定它是否會受到傷害。有人可能會搖動碗說話。你輸入一個特定的球,但你得到一個隨機球回來,所以我需要能夠比較球。 –

0

您可以設置一定的整數爲每個疊加的位置 類似的東西:

mapView.getOverlays().add(0,myScaleBarOverlay); 

,當你想RO刪除此呼籲:

mapView.getOverlays().remove(0); 
mapView.invalidate(); 

Regard