get theme from VectorTileLayer, instead of setting it on Loader

This commit is contained in:
Hannes Janetzek 2014-03-09 18:09:26 +01:00
parent ff01b3f80d
commit 3eba47b0bb
2 changed files with 17 additions and 20 deletions

View File

@ -98,19 +98,24 @@ public class VectorTileLayer extends TileLayer {
* Set {@link IRenderTheme} used by {@link TileLoader} * Set {@link IRenderTheme} used by {@link TileLoader}
*/ */
public void setRenderTheme(IRenderTheme theme) { public void setRenderTheme(IRenderTheme theme) {
// wait for loaders to finish all current jobs to /* wait for loaders to finish all current jobs to
// not change theme instance hold by loader instance * not change theme instance hold by loader instance
// while running * while running */
pauseLoaders(true); pauseLoaders(true);
mTileManager.clearJobs(); mTileManager.clearJobs();
for (TileLoader l : mTileLoader) mTheme = theme;
((VectorTileLoader) l).setRenderTheme(theme); // for (TileLoader l : mTileLoader)
// ((VectorTileLoader) l).setRenderTheme(theme);
tileRenderer().setOverdrawColor(theme.getMapBackground()); tileRenderer().setOverdrawColor(theme.getMapBackground());
resumeLoaders(); resumeLoaders();
} }
private IRenderTheme mTheme;
public IRenderTheme getTheme() {
return mTheme;
} }
} }

View File

@ -60,7 +60,6 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
public static final byte STROKE_MAX_ZOOM = 17; public static final byte STROKE_MAX_ZOOM = 17;
protected IRenderTheme renderTheme; protected IRenderTheme renderTheme;
protected int renderLevels;
/** current TileDataSource used by this MapTileLoader */ /** current TileDataSource used by this MapTileLoader */
protected ITileDataSource mTileDataSource; protected ITileDataSource mTileDataSource;
@ -77,10 +76,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;
public void setRenderTheme(IRenderTheme theme) {
renderTheme = theme;
renderLevels = theme.getLevels();
}
private final VectorTileLayer mTileLayer; private final VectorTileLayer mTileLayer;
public VectorTileLoader(VectorTileLayer tileLayer) { public VectorTileLoader(VectorTileLayer tileLayer) {
@ -101,7 +96,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
log.error("no tile source is set"); log.error("no tile source is set");
return false; return false;
} }
renderTheme = mTileLayer.getTheme();
if (renderTheme == null) { if (renderTheme == null) {
log.error("no theme is set"); log.error("no theme is set");
return false; return false;
@ -179,21 +174,18 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
if (isCanceled() || mTile.state(CANCEL)) if (isCanceled() || mTile.state(CANCEL))
throw new CancellationException(); throw new CancellationException();
TagSet tags = filterTags(element.tags);
if (tags == null)
return;
mElement = element; mElement = element;
/* get and apply render instructions */
if (element.type == GeometryType.POINT) { if (element.type == GeometryType.POINT) {
TagSet tags = filterTags(element.tags);
/* get and apply render instructions */
renderNode(renderTheme.matchElement(element.type, tags, mTile.zoomLevel)); renderNode(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
} else { } else {
TagSet tags = filterTags(element.tags); mCurLayer = getValidLayer(element.layer) * renderTheme.getLevels();
mCurLayer = getValidLayer(element.layer) * renderLevels;
/* get and apply render instructions */
renderWay(renderTheme.matchElement(element.type, tags, mTile.zoomLevel)); renderWay(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
} }
clearState(); clearState();
} }