在我的应用程序中,我正在根据用户在首选项中的选择设置(在线)磁贴源(只有两个可能的选项-ump和默认值,即openstreetmaps)。下面是我如何从默认值更改平铺的源:

SharedPreferences prefs = PreferenceManager
        .getDefaultSharedPreferences(getBaseContext());
if (prefs.getString("map_source_preference", "osm") == "ump") {
    final MapTileProviderBasic tileProvider = new MapTileProviderBasic(
            getApplicationContext());
    final ITileSource tileSource = new XYTileSource("UMP Tiles", null,
            3, 14, 256, ".png", "http://tiles.ump.waw.pl/ump_tiles/");
    tileProvider.setTileSource(tileSource);
    final TilesOverlay tilesOverlay = new TilesOverlay(tileProvider,
            this.getBaseContext());
    mapView.getOverlays().add(tilesOverlay);
}

我的问题是:如何将tile provider设置回osmdroid的默认值?在这种情况下tileProvider.detach()是否有效?

最佳答案

更改ITileSource时,您不想创建新的TileOverlay。你可以打电话

mapView.setTileSource(tileSource);

这将把新的tile源应用到现有的tilesoverlay。
如果要返回到默认磁贴源,可以调用
mapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);

10-06 03:37