2011-05-27 88 views
2

我正在研究MapView應用程序,並希望在程序中放置一個漂亮的小復活節彩蛋。我想要做的是有一個基本上不可見的疊加層,但是當點擊會觸發一個事件來顯示一個視圖。「隱藏」Android中的OverlayItem,可能嗎?

現在在iPhone上,我通過在註解中使用setHidden:true來實現這一點,我不想看到它..註釋仍然存在,仍然是可點擊的,但是你看不到它。

我想在Android的overlayItem上找到一些等價的方法,但什麼都沒發現。我唯一的選擇就是通過這種方式來查找/創建透明圖像並將其添加爲mapView的疊加層?如果必須的話,我可以做到這一點,但還有其他選擇嗎?如果沒有,任何人都可以指向一個相對較小的透明圖像?

回答

0

我發現最簡單的解決方案是隻使用一個不可見的drawable並將其添加爲overlayitem,所以這就是我所做的,它的工作原理預期。

0

您可以在地圖視圖的頂部製作可點擊的圖像視圖(相應地設置寬度/高度,顏色爲透明),點擊時會觸發復活節彩蛋。然而,它可能很難正確定位..

除此之外,我可以想象使用自定義視圖,您可以重寫onTouch函數來觸發復活節彩蛋,如果x,y座標位於一個框內。否則會被地圖視圖處理。但這聽起來像可能是一個復活節彩蛋很多工作..

+0

我剛剛添加了一個基本上是透明圖像的覆蓋圖作爲itemizedoverlayitem,並且它工作正常。感謝您的其他想法。 – user756212 2011-05-31 14:24:23

4

我知道你找到了一種方法來隱藏你的覆蓋,但有更優雅的方式來做到這一點。 創建自定義類的疊加:

public class MapOverlay extends Overlay{ 

    private Boolean visible; 

    public MapOverlay(){ 
     this.visible = true; 
    } 

    public void draw(Canvas canvas, MapView mapv, boolean shadow){ 
     super.draw(canvas, mapv, shadow); 

     if (visible) { 
      // draw what you want 
     } 
    } 

    public Boolean isVisible() { 
     return visible; 
    } 

    public void isVisible(Boolean visible) { 
     this.visible = visible; 
    } 

    public void toggleVisible() { 
     this.visible = !visible; 
    } 
} 

然後在你的活動,增加覆蓋和往常一樣:

mapView.getOverlays().addOverlay(new MapOverlay()); 

以後,如果你想顯示/隱藏疊加,只需撥打:

mapView.getOverlays().get(0).toggleVisible(); 

或:

mapView.getOverlays().get(0).isVisible(false); 

希望它有幫助。

+0

你的意思是「MapOverlay擴展OverlayItem」嗎? – 2012-10-12 20:48:31