1

我有一个运行良好的 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,但瓷砖仍然可见。

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

谢谢。

4

1 回答 1

1

是的,可以使绘制的 TileOverlay 不可见。错误出现在我的代码中:我删除了 GoogleMap 上的空检查,该检查在 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();
            }
        }
    }
于 2013-06-25T11:42:17.040 回答