java - 将 OSMDroid 的 map 图 block 提供程序更改回默认值

标签 java android android-mapview osmdroid

在我的应用程序中,我根据用户在首选项中的选择设置(在线)图 block 来源(只有 2 个可能的选项 - UMP 和默认值,即 OpenStreetMaps)。以下是我如何将图 block 的来源从默认值更改为:

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

我的问题是:如何将图 block 提供程序设置回 OSMDroid 的默认值?在这种情况下,tileProvider.detach() 可以工作吗?

最佳答案

您不想在更改 ITileSource 时创建新的 TilesOverlay。您可以调用

mapView.setTileSource(tileSource);

这会将您的新图 block 源应用到现有的 TilesOverlay。

如果您想返回到默认图 block 源,您可以调用

mapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);

关于java - 将 OSMDroid 的 map 图 block 提供程序更改回默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18816886/

相关文章:

java - 在 Java 中,为什么代码块没有关键字,只有大括号

java - Android 对所有 Activity 使用独特的 onDestroy

android - 我可以使用 retrofit 2 重新调用

java - ArrayIndexOutOfBoundsException - 改造 2.4.0 调用

android - runOnFirstFix 实际上没有在第一个位置修复上运行

java - MapView 不工作 [android]

java - ejb3.0表未映射

java - 具有值(等于)相等性的 SoftReference 的潜在用途

java - 如何在 JPA 规范中按字段区分计数查询?

android - MapActivity 中的 ClassNotFoundException?