2013-06-21 34 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(); 
      } 
     } 
    }