diff --git a/vtm-playground/resources/assets/styles/style.xml b/vtm-playground/resources/assets/styles/style.xml
index b3fa9ea2..695ffb54 100644
--- a/vtm-playground/resources/assets/styles/style.xml
+++ b/vtm-playground/resources/assets/styles/style.xml
@@ -4,51 +4,47 @@
xsi:schemaLocation="http://opensciencemap.org/rendertheme https://raw.githubusercontent.com/mapsforge/vtm/master/resources/rendertheme.xsd">
-
+
-
+
+
+
+
+
diff --git a/vtm-playground/src/org/oscim/test/MapsforgeStyleTest.java b/vtm-playground/src/org/oscim/test/MapsforgeStyleTest.java
index fb911dcb..7de4f8a9 100644
--- a/vtm-playground/src/org/oscim/test/MapsforgeStyleTest.java
+++ b/vtm-playground/src/org/oscim/test/MapsforgeStyleTest.java
@@ -36,7 +36,6 @@ import java.util.Set;
public class MapsforgeStyleTest extends GdxMap {
private static File mapFile;
- private String style;
@Override
public void createLayers() {
@@ -45,7 +44,7 @@ public class MapsforgeStyleTest extends GdxMap {
tileSource.setPreferredLanguage("en");
VectorTileLayer l = mMap.setBaseMap(tileSource);
- loadTheme();
+ loadTheme(null);
mMap.layers().add(new BuildingLayer(mMap, l));
mMap.layers().add(new LabelLayer(mMap, l));
@@ -72,23 +71,31 @@ public class MapsforgeStyleTest extends GdxMap {
return file;
}
- private void loadTheme() {
+ private void loadTheme(final String styleId) {
mMap.setTheme(new StreamRenderTheme("", getClass().getResourceAsStream("/assets/styles/style.xml"), new XmlRenderThemeMenuCallback() {
@Override
public Set getCategories(XmlRenderThemeStyleMenu renderThemeStyleMenu) {
- if (style == null)
- style = renderThemeStyleMenu.getDefaultValue();
+ // Use the selected style or the default
+ String style = styleId != null ? styleId : renderThemeStyleMenu.getDefaultValue();
+
+ // Retrieve the layer from the style id
XmlRenderThemeStyleLayer renderThemeStyleLayer = renderThemeStyleMenu.getLayer(style);
if (renderThemeStyleLayer == null) {
System.err.println("Invalid style " + style);
return null;
}
+
+ // First get the selected layer's categories that are enabled together
Set categories = renderThemeStyleLayer.getCategories();
- // Add the categories from overlays that are enabled
+
+ // Then add the selected layer's overlays that are enabled individually
+ // Here we use the style menu, but users can use their own preferences
for (XmlRenderThemeStyleLayer overlay : renderThemeStyleLayer.getOverlays()) {
if (overlay.isEnabled())
categories.addAll(overlay.getCategories());
}
+
+ // This is the whole categories set to be enabled
return categories;
}
}));
@@ -98,15 +105,11 @@ public class MapsforgeStyleTest extends GdxMap {
protected boolean onKeyDown(int keycode) {
switch (keycode) {
case Input.Keys.NUM_1:
- System.out.println("Sea with land");
- style = "1";
- loadTheme();
+ loadTheme("1");
mMap.clearMap();
return true;
case Input.Keys.NUM_2:
- System.out.println("Sea without land");
- style = "2";
- loadTheme();
+ loadTheme("2");
mMap.clearMap();
return true;
}