move TagFilter stuff to OsmTileLayer
This commit is contained in:
parent
8926c84ca9
commit
d00e9771e0
@ -22,9 +22,11 @@ public class OsmTileLayer extends VectorTileLayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static class OsmTileLoader extends VectorTileLoader {
|
static class OsmTileLoader extends VectorTileLoader {
|
||||||
|
private final TagSet mFilteredTags;
|
||||||
|
|
||||||
public OsmTileLoader(TileManager tileManager) {
|
public OsmTileLoader(TileManager tileManager) {
|
||||||
super(tileManager);
|
super(tileManager);
|
||||||
|
mFilteredTags = new TagSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Replace tags that should only be matched by key in RenderTheme
|
/* Replace tags that should only be matched by key in RenderTheme
|
||||||
@ -40,7 +42,7 @@ public class OsmTileLayer extends VectorTileLayer {
|
|||||||
new TagReplacement(Tag.KEY_MIN_HEIGHT)
|
new TagReplacement(Tag.KEY_MIN_HEIGHT)
|
||||||
};
|
};
|
||||||
|
|
||||||
protected boolean filterTags(TagSet tagSet) {
|
protected TagSet filterTags(TagSet tagSet) {
|
||||||
Tag[] tags = tagSet.tags;
|
Tag[] tags = tagSet.tags;
|
||||||
|
|
||||||
mFilteredTags.clear();
|
mFilteredTags.clear();
|
||||||
@ -58,7 +60,7 @@ public class OsmTileLayer extends VectorTileLayer {
|
|||||||
mFilteredTags.add(t);
|
mFilteredTags.add(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return mFilteredTags;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,8 +79,6 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
|||||||
/** Line-scale-factor depending on zoom and latitude */
|
/** Line-scale-factor depending on zoom and latitude */
|
||||||
protected float mLineScale = 1.0f;
|
protected float mLineScale = 1.0f;
|
||||||
|
|
||||||
protected final TagSet mFilteredTags;
|
|
||||||
|
|
||||||
public void setRenderTheme(IRenderTheme theme) {
|
public void setRenderTheme(IRenderTheme theme) {
|
||||||
renderTheme = theme;
|
renderTheme = theme;
|
||||||
renderLevels = theme.getLevels();
|
renderLevels = theme.getLevels();
|
||||||
@ -88,8 +86,6 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
|||||||
|
|
||||||
public VectorTileLoader(TileManager tileManager) {
|
public VectorTileLoader(TileManager tileManager) {
|
||||||
super(tileManager);
|
super(tileManager);
|
||||||
|
|
||||||
mFilteredTags = new TagSet();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -151,11 +147,11 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDataSource(ITileDataSource mapDatabase) {
|
public void setDataSource(ITileDataSource dataSource) {
|
||||||
if (mTileDataSource != null)
|
if (mTileDataSource != null)
|
||||||
mTileDataSource.destroy();
|
mTileDataSource.destroy();
|
||||||
|
|
||||||
mTileDataSource = mapDatabase;
|
mTileDataSource = dataSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
static class TagReplacement {
|
static class TagReplacement {
|
||||||
@ -171,17 +167,14 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
|||||||
/**
|
/**
|
||||||
* Override this method to change tags that should be passed
|
* Override this method to change tags that should be passed
|
||||||
* to {@link RenderTheme} matching.
|
* to {@link RenderTheme} matching.
|
||||||
|
* E.g. to replace tags that should not be cached in Rendertheme
|
||||||
*/
|
*/
|
||||||
protected boolean filterTags(TagSet tagSet) {
|
protected TagSet filterTags(TagSet tagSet) {
|
||||||
mFilteredTags.clear();
|
return tagSet;
|
||||||
for (int i = 0; i < tagSet.numTags; i++)
|
|
||||||
mFilteredTags.add(tagSet.tags[i]);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(MapElement element) {
|
public void process(MapElement element) {
|
||||||
clearState();
|
|
||||||
|
|
||||||
if (isCanceled() || mTile.state(CANCEL))
|
if (isCanceled() || mTile.state(CANCEL))
|
||||||
throw new CancellationException();
|
throw new CancellationException();
|
||||||
@ -189,28 +182,20 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
|||||||
mElement = element;
|
mElement = element;
|
||||||
|
|
||||||
if (element.type == GeometryType.POINT) {
|
if (element.type == GeometryType.POINT) {
|
||||||
// remove tags that should not be cached in Rendertheme
|
TagSet tags = filterTags(element.tags);
|
||||||
filterTags(element.tags);
|
|
||||||
|
|
||||||
// get and apply render instructions
|
/* get and apply render instructions */
|
||||||
renderNode(renderTheme.matchElement(element.type, mFilteredTags, mTile.zoomLevel));
|
renderNode(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
|
||||||
} else {
|
} else {
|
||||||
|
TagSet tags = filterTags(element.tags);
|
||||||
// replace tags that should not be cached in Rendertheme (e.g. name)
|
|
||||||
if (!filterTags(element.tags))
|
|
||||||
return;
|
|
||||||
|
|
||||||
mCurLayer = getValidLayer(element.layer) * renderLevels;
|
mCurLayer = getValidLayer(element.layer) * renderLevels;
|
||||||
|
|
||||||
// get and apply render instructions
|
/* get and apply render instructions */
|
||||||
renderWay(renderTheme.matchElement(element.type, mFilteredTags, mTile.zoomLevel));
|
renderWay(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
|
||||||
|
|
||||||
//boolean closed = element.type == GeometryType.POLY;
|
|
||||||
|
|
||||||
mCurLineLayer = null;
|
|
||||||
}
|
}
|
||||||
|
clearState();
|
||||||
mElement = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//protected void debugUnmatched(boolean closed, TagSet tags) {
|
//protected void debugUnmatched(boolean closed, TagSet tags) {
|
||||||
@ -243,6 +228,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
|||||||
|
|
||||||
protected void clearState() {
|
protected void clearState() {
|
||||||
mCurLineLayer = null;
|
mCurLineLayer = null;
|
||||||
|
mElement = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** RenderThemeCallback ***/
|
/*** RenderThemeCallback ***/
|
||||||
@ -271,7 +257,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
|||||||
|
|
||||||
ll.addLine(mElement);
|
ll.addLine(mElement);
|
||||||
|
|
||||||
// NB: keep reference for outline layer(s)
|
/* keep reference for outline layer(s) */
|
||||||
mCurLineLayer = ll;
|
mCurLineLayer = ll;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -291,8 +277,8 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// slower to load (requires tesselation) and uses
|
/* slower to load (requires tesselation) and uses
|
||||||
// more memory but should be faster to render
|
* more memory but should be faster to render */
|
||||||
protected final static boolean USE_MESH_POLY = false;
|
protected final static boolean USE_MESH_POLY = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user