diff --git a/vtm/src/org/oscim/map/Map.java b/vtm/src/org/oscim/map/Map.java index 1b9b086e..43341196 100644 --- a/vtm/src/org/oscim/map/Map.java +++ b/vtm/src/org/oscim/map/Map.java @@ -26,6 +26,7 @@ import org.oscim.event.EventListener; import org.oscim.event.Gesture; import org.oscim.event.GestureDetector; import org.oscim.event.MotionEvent; +import org.oscim.layers.Layer; import org.oscim.layers.MapEventLayer; import org.oscim.layers.tile.TileLayer; import org.oscim.layers.tile.vector.OsmTileLayer; @@ -166,14 +167,26 @@ public abstract class Map implements TaskQueue { * use map background color from theme. */ public void setTheme(ThemeFile theme) { + setTheme(theme, false); + } + + /** + * Utility function to set theme of base vector-layer, optionally + * to all vector layers and use map background color from theme. + */ + public void setTheme(ThemeFile theme, boolean allLayers) { if (mBaseLayer == null) { log.error("No base layer set"); throw new IllegalStateException(); } - setTheme(ThemeLoader.load(theme)); + setTheme(ThemeLoader.load(theme), allLayers); } public void setTheme(IRenderTheme theme) { + setTheme(theme, false); + } + + public void setTheme(IRenderTheme theme, boolean allLayers) { if (theme == null) { throw new IllegalArgumentException("Theme cannot be null."); } @@ -184,6 +197,14 @@ public abstract class Map implements TaskQueue { ((VectorTileLayer) mBaseLayer).setRenderTheme(theme); } + if (allLayers) { + for (Layer layer : mLayers) { + if (layer instanceof VectorTileLayer) { + ((VectorTileLayer) layer).setRenderTheme(theme); + } + } + } + MapRenderer.setBackgroundColor(theme.getMapBackground()); clearMap();