我有一个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,但瓷砖仍然可见。
是否可以使绘制的图块不可见?
感谢。
答案 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();
}
}
}