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}
*/
public void setRenderTheme(IRenderTheme theme) {
// wait for loaders to finish all current jobs to
// not change theme instance hold by loader instance
// while running
/* wait for loaders to finish all current jobs to
* not change theme instance hold by loader instance
* while running */
pauseLoaders(true);
mTileManager.clearJobs();
for (TileLoader l : mTileLoader)
((VectorTileLoader) l).setRenderTheme(theme);
mTheme = theme;
// for (TileLoader l : mTileLoader)
// ((VectorTileLoader) l).setRenderTheme(theme);
tileRenderer().setOverdrawColor(theme.getMapBackground());
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;
protected IRenderTheme renderTheme;
protected int renderLevels;
/** current TileDataSource used by this MapTileLoader */
protected ITileDataSource mTileDataSource;
@ -77,10 +76,6 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
/** Line-scale-factor depending on zoom and latitude */
protected float mLineScale = 1.0f;
public void setRenderTheme(IRenderTheme theme) {
renderTheme = theme;
renderLevels = theme.getLevels();
}
private final VectorTileLayer mTileLayer;
public VectorTileLoader(VectorTileLayer tileLayer) {
@ -101,7 +96,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
log.error("no tile source is set");
return false;
}
renderTheme = mTileLayer.getTheme();
if (renderTheme == null) {
log.error("no theme is set");
return false;
@ -179,21 +174,18 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
if (isCanceled() || mTile.state(CANCEL))
throw new CancellationException();
TagSet tags = filterTags(element.tags);
if (tags == null)
return;
mElement = element;
/* get and apply render instructions */
if (element.type == GeometryType.POINT) {
TagSet tags = filterTags(element.tags);
/* get and apply render instructions */
renderNode(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
} else {
TagSet tags = filterTags(element.tags);
mCurLayer = getValidLayer(element.layer) * renderLevels;
/* get and apply render instructions */
mCurLayer = getValidLayer(element.layer) * renderTheme.getLevels();
renderWay(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
}
clearState();
}