在程序中,我根據用戶在參數中的選擇設置tiles 的源代碼,用戶只有2中選擇-UMP和默認,例如 OpenStreetMaps。下面的代碼是如何從默認的情形下改變 tiles的源代碼。
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);
}
現在的問題是如何設置 provider 返回到OSMDroid 的默認格式?這個例子中的tileProvider.detach()運行了嗎?
當你改變 ITileSource 時,不是想創建一個新的 TilesOverlay。
你可以調用 mapView.setTileSource(tileSource);
那樣可以申請新的 tile source 到現有的TilesOverlay。
如果你想返回到默認的 tile source,你可以調用 mapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);