如何使绘制的TileOverlay不可见

时间:2013-06-21 01:47:57

标签: android google-maps android-maps-v2

我有一个Android Maps v2 TileOverlay效果很好。我有自己的TileProvider生成位图,一切都很好。我希望在运行时动态地使磁贴不可见,使用如下代码:

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

TileProvider可以正常工作并绘制图块,但是当我使用setVisible(false)时图块永远不会被隐藏。

我甚至可以阅读tileOverlay.isVisible()并返回false,但瓷砖仍然可见。

是否可以使绘制的图块不可见?

感谢。

1 个答案:

答案 0 :(得分:0)

是的,可以使绘制的TileOverlay不可见。该错误出现在我的代码中:我删除了GoogleMap上的空检查,该检查在Activity的onCreate()和onResume()期间调用,因此有多个地图。因此,即使在调用TileOverlay.setVisible(false)或.remove()之后,仍然有其他地图仍然保留TileOverlay。奇怪的是,即使没有这个null检查,应用程序似乎也在以其他方式工作。请参阅下面的重要空检查:

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();
            }
        }
    }