我正在使用osmdroid版本6.1.2在android下显示地图应用程序(已在具有4.0.3、7.0、8.0到9.0的android版本的不同设备上进行了测试,关于效果没有差异)。
只要我只使用一个主层(例如MAPNIK),一切就可以了。但是,当我添加一个叠加层(例如PUBLIC_TRANSPORT)时,某些地图图块(其中一些是不可预测的)显示的是闪烁的内容。实际上,这些图块的地图层每秒可能被不同的旧内容(可能来自缓存)替换了几次。背景地图始终保持稳定,但是覆盖层正在暴动。
即使完全下载了所有图块,该效果仍然存在-使用TileStates.getUpToDate();
mapView.invalidate();也无济于事。
代码段(为了更好的概述而进行了简化):
// background map
MapView mapView = (MapView) findViewById(R.id.mapview);
MapTileSource mapTileSource = new MapTileSource(this);
mapView.setTileSource(TileSourceFactory.MAPNIK);
// overlay map
ITileSource iTileSource = TileSourceFactory.PUBLIC_TRANSPORT;
MapTileProviderBasic provider = new MapTileProviderBasic(getApplicationContext());
provider.setTileSource(iTileSource);
TilesOverlay tilesOverlay = new TilesOverlay(provider, this.getBaseContext());
tilesOverlay.setLoadingBackgroundColor(Color.TRANSPARENT);
mapView.getOverlays().add(tilesOverlay);
并在layout.xml
中<org.osmdroid.views.MapView
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent" />