Mapsforge: improve overlapping map regions (#905)
This commit is contained in:
parent
9357cf380b
commit
825cd05150
@ -3,7 +3,7 @@
|
|||||||
## New since 0.17.0
|
## New since 0.17.0
|
||||||
|
|
||||||
- Mapsforge: deduplicate maps [#903](https://github.com/mapsforge/vtm/pull/903)
|
- Mapsforge: deduplicate maps [#903](https://github.com/mapsforge/vtm/pull/903)
|
||||||
- Fix overlapping map regions [#903](https://github.com/mapsforge/vtm/pull/903)
|
- Fix overlapping map regions [#903](https://github.com/mapsforge/vtm/pull/903) [#905](https://github.com/mapsforge/vtm/pull/905)
|
||||||
- Minor improvements and bug fixes
|
- Minor improvements and bug fixes
|
||||||
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.18.0)
|
- [Solved issues](https://github.com/mapsforge/vtm/issues?q=is%3Aclosed+milestone%3A0.18.0)
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ public class MapsforgeTest extends GdxMapApp {
|
|||||||
mapFileTileSource.setMapFile(mapFile.getAbsolutePath());
|
mapFileTileSource.setMapFile(mapFile.getAbsolutePath());
|
||||||
tileSource.add(mapFileTileSource);
|
tileSource.add(mapFileTileSource);
|
||||||
}
|
}
|
||||||
tileSource.setDeduplicate(true);
|
//tileSource.setDeduplicate(true);
|
||||||
//tileSource.setPreferredLanguage("en");
|
//tileSource.setPreferredLanguage("en");
|
||||||
|
|
||||||
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
VectorTileLayer l = mMap.setBaseMap(tileSource);
|
||||||
|
@ -194,7 +194,7 @@ public class VectorTileLoader extends TileLoader implements RenderStyle.Callback
|
|||||||
if (element.type == GeometryType.POINT) {
|
if (element.type == GeometryType.POINT) {
|
||||||
renderNode(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
|
renderNode(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
|
||||||
} else {
|
} else {
|
||||||
mCurBucket = getValidLayer(element.layer - (element.isPoly() ? element.level : 0)) * renderTheme.getLevels();
|
mCurBucket = getValidLayer(element.layer) * renderTheme.getLevels() * (element.level > 0 ? element.level : 1);
|
||||||
renderWay(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
|
renderWay(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
|
||||||
}
|
}
|
||||||
clearState();
|
clearState();
|
||||||
|
@ -25,6 +25,7 @@ public class TileDataSink implements ITileDataSink {
|
|||||||
public final Set<Integer> hashPois = new HashSet<>();
|
public final Set<Integer> hashPois = new HashSet<>();
|
||||||
public final Set<Integer> hashWays = new HashSet<>();
|
public final Set<Integer> hashWays = new HashSet<>();
|
||||||
|
|
||||||
|
public int level, levels;
|
||||||
private QueryResult result;
|
private QueryResult result;
|
||||||
private final ITileDataSink sink;
|
private final ITileDataSink sink;
|
||||||
|
|
||||||
|
@ -226,7 +226,6 @@ public class MapDatabase implements ITileDataSource {
|
|||||||
private int zoomLevelMax = Byte.MAX_VALUE;
|
private int zoomLevelMax = Byte.MAX_VALUE;
|
||||||
|
|
||||||
private boolean deduplicate;
|
private boolean deduplicate;
|
||||||
private int level;
|
|
||||||
|
|
||||||
public MapDatabase(MapFileTileSource tileSource) throws IOException {
|
public MapDatabase(MapFileTileSource tileSource) throws IOException {
|
||||||
mTileSource = tileSource;
|
mTileSource = tileSource;
|
||||||
@ -435,10 +434,6 @@ public class MapDatabase implements ITileDataSource {
|
|||||||
this.deduplicate = deduplicate;
|
this.deduplicate = deduplicate;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLevel(int level) {
|
|
||||||
this.level = level;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setTileClipping(QueryParameters queryParameters, SubFileParameter subFileParameter,
|
private void setTileClipping(QueryParameters queryParameters, SubFileParameter subFileParameter,
|
||||||
long currentRow, long currentCol) {
|
long currentRow, long currentCol) {
|
||||||
long numRows = queryParameters.toBlockY - queryParameters.fromBlockY;
|
long numRows = queryParameters.toBlockY - queryParameters.fromBlockY;
|
||||||
@ -708,7 +703,6 @@ public class MapDatabase implements ITileDataSource {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
e.setLayer(layer);
|
e.setLayer(layer);
|
||||||
e.level = level;
|
|
||||||
|
|
||||||
PointOfInterest poi = null;
|
PointOfInterest poi = null;
|
||||||
if (pois != null) {
|
if (pois != null) {
|
||||||
@ -1066,7 +1060,6 @@ public class MapDatabase implements ITileDataSource {
|
|||||||
e.simplify(1, true);
|
e.simplify(1, true);
|
||||||
|
|
||||||
e.setLayer(layer);
|
e.setLayer(layer);
|
||||||
e.level = level;
|
|
||||||
|
|
||||||
Way way = null;
|
Way way = null;
|
||||||
if (ways != null) {
|
if (ways != null) {
|
||||||
@ -1085,8 +1078,11 @@ public class MapDatabase implements ITileDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mapDataSink != null) {
|
if (mapDataSink != null) {
|
||||||
if (!deduplicate || way == null || ((TileDataSink) mapDataSink).hashWays.add(way.hashCode()))
|
TileDataSink tileDataSink = (TileDataSink) mapDataSink;
|
||||||
|
if (!deduplicate || way == null || tileDataSink.hashWays.add(way.hashCode())) {
|
||||||
|
e.level = e.isLine() ? tileDataSink.levels : tileDataSink.level;
|
||||||
mapDataSink.process(e);
|
mapDataSink.process(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,11 +60,12 @@ public class MultiMapDatabase implements ITileDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TileDataSink dataSink = new TileDataSink(sink);
|
TileDataSink dataSink = new TileDataSink(sink);
|
||||||
for (int i = 0; i < mapDatabases.size(); i++) {
|
for (int i = 0, n = mapDatabases.size(); i < n; i++) {
|
||||||
MapDatabase mapDatabase = mapDatabases.get(i);
|
MapDatabase mapDatabase = mapDatabases.get(i);
|
||||||
if (mapDatabase.supportsTile(tile)) {
|
if (mapDatabase.supportsTile(tile)) {
|
||||||
mapDatabase.setDeduplicate(deduplicate);
|
mapDatabase.setDeduplicate(deduplicate);
|
||||||
mapDatabase.setLevel(i);
|
dataSink.level = i + 1;
|
||||||
|
dataSink.levels = n;
|
||||||
mapDatabase.query(tile, dataSink);
|
mapDatabase.query(tile, dataSink);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user