2013-06-21 33 views
1

我有一個Android Maps v2 TileOverlay,效果很好。我有我自己的TileProvider生成位圖,一切都很好。我要動態地使瓷磚隱形一段時間在運行時,使用這樣的代碼:如何使繪製的TileOverlay隱形

private TileOverlay tileOverlay; 
... 
tileOverlay = googleMap.addTileOverlay(new TileOverlayOptions() 
       .zIndex(100f) 
       .tileProvider(new MyTileProvider(credential,mContext))); 
... 
tileOverlay.setVisible(false); 

的TileProvider工作,並提請瓦恰到好處,但是當我使用setVisible(false)瓦永遠不會看不見。

我甚至可以讀取tileOverlay.isVisible(),它返回false,但瓦片仍然可見。

是否可以使繪製的瓷磚不可見?

謝謝。

+0

如果你可以做一個簡單的例子,顯示它,我建議在[gmaps-API的問題]發佈的問題(http://code.google.com/ p/gmaps-API的問題/問題/列表?可以= 2&q = apitype = Android2)。嘗試在Maps API演示TileOverlay示例(顯示月亮的示例)中添加'setVisible(false)'。 –

+0

謝謝MaciejGorski,好主意。我做到了,它可以在API演示中使用。在那裏他們使用UrlTileProvider,而我定義了我自己的TileProvider。我會認爲兩個輸出的TileOverlay都是一樣的,因爲它們都可以工作,但是我仍然無法讓自己的貼圖看不見,但是我可以讓它們看不見。有任何想法嗎? – aez

+0

這是一個錯誤,我已經在gmaps-api-issues中啓動了一個問題5541 – aez

回答

0

是的,可以使繪製的TileOverlay不可見。這個錯誤出現在我的代碼中:我刪除了GoogleMap上的null檢查,這個檢查在Activity的onCreate()和onResume()期間被調用,因此有多個地圖。所以,即使在調用TileOverlay.setVisible(false)或.remove()之後,仍然還有其他貼圖保留TileOverlay的地圖。奇怪的是,即使沒有這個空檢查應用程序似乎以其他任何方式工作。請參閱下面的重要零檢查:

private void setUpMapIfNeeded() { 
     // Do a null check to confirm that we have not already instantiated the map. 
     if (googleMap==null) { //-- DON'T FORGET THIS!! 

      googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();   
      // Check if we were successful in obtaining the map. 
      if (googleMap!=null) { 
       setUpMap(); 
      } 
     } 
    }