diff --git a/docs/Changelog.md b/docs/Changelog.md index 3af5209c..1b8c3c2e 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -10,6 +10,7 @@ - Core utilities [#396](https://github.com/mapsforge/vtm/issues/396) - Map scaling improvements [#401](https://github.com/mapsforge/vtm/issues/401) - Mapsforge fix artifacts zoom > 17 [#231](https://github.com/mapsforge/vtm/issues/231) +- PolyLabel default disabled [#402](https://github.com/mapsforge/vtm/issues/402) - vtm-theme-comparator module [#387](https://github.com/mapsforge/vtm/issues/387) - Internal render themes various improvements [#41](https://github.com/mapsforge/vtm/issues/41) - Many other minor improvements and bug fixes diff --git a/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java b/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java index c83d5697..45bda20a 100644 --- a/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/MapsforgeMapActivity.java @@ -59,6 +59,8 @@ public class MapsforgeMapActivity extends MapActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + //LabelLayer.POLY_LABEL = true; + startActivityForResult(new Intent(this, MapFilePicker.class), SELECT_MAP_FILE); } diff --git a/vtm-playground/src/org/oscim/test/MapsforgeTest.java b/vtm-playground/src/org/oscim/test/MapsforgeTest.java index 9582f39b..b34d1edd 100644 --- a/vtm-playground/src/org/oscim/test/MapsforgeTest.java +++ b/vtm-playground/src/org/oscim/test/MapsforgeTest.java @@ -40,6 +40,10 @@ public class MapsforgeTest extends GdxMap { private static File mapFile; + private MapsforgeTest() { + //LabelLayer.POLY_LABEL = true; + } + @Override public void createLayers() { MapFileTileSource tileSource = new MapFileTileSource(); diff --git a/vtm/src/org/oscim/layers/tile/vector/labeling/LabelLayer.java b/vtm/src/org/oscim/layers/tile/vector/labeling/LabelLayer.java index 918b9ddd..f44e55b2 100644 --- a/vtm/src/org/oscim/layers/tile/vector/labeling/LabelLayer.java +++ b/vtm/src/org/oscim/layers/tile/vector/labeling/LabelLayer.java @@ -34,9 +34,11 @@ public class LabelLayer extends Layer implements Map.UpdateListener, TileManager static final Logger log = LoggerFactory.getLogger(LabelLayer.class); - public final static String LABEL_DATA = LabelLayer.class.getName(); + static final String LABEL_DATA = LabelLayer.class.getName(); - private final static long MAX_RELABEL_DELAY = 100; + private static final long MAX_RELABEL_DELAY = 100; + + public static boolean POLY_LABEL; private final LabelPlacement mLabelPlacer; private final Worker mWorker; diff --git a/vtm/src/org/oscim/layers/tile/vector/labeling/LabelTileLoaderHook.java b/vtm/src/org/oscim/layers/tile/vector/labeling/LabelTileLoaderHook.java index b32879f2..15bd28c3 100644 --- a/vtm/src/org/oscim/layers/tile/vector/labeling/LabelTileLoaderHook.java +++ b/vtm/src/org/oscim/layers/tile/vector/labeling/LabelTileLoaderHook.java @@ -1,6 +1,6 @@ /* * Copyright 2013 Hannes Janetzek - * Copyright 2016 devemux86 + * Copyright 2016-2017 devemux86 * Copyright 2016 Andrey Novikov * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). @@ -90,10 +90,28 @@ public class LabelTileLoaderHook implements TileLoaderThemeHook { return false; } - if (label == null) - label = PolyLabel.get(element); + float x = 0; + float y = 0; + if (label == null) { + if (LabelLayer.POLY_LABEL) { + label = PolyLabel.get(element); + x = label.x; + y = label.y; + } else { + int n = element.index[0]; + for (int i = 0; i < n; ) { + x += element.points[i++]; + y += element.points[i++]; + } + x /= (n / 2); + y /= (n / 2); + } + } else { + x = label.x; + y = label.y; + } - ld.labels.push(TextItem.pool.get().set(label.x, label.y, value, text)); + ld.labels.push(TextItem.pool.get().set(x, y, value, text)); } else if (element.type == POINT) { String value = element.tags.getValue(text.textKey); if (value == null || value.length() == 0)