convert height/min_height tag, enable 'unmatched theme' debug option again

This commit is contained in:
Hannes Janetzek 2013-06-06 14:01:39 +02:00
parent ce06a87422
commit a2a97d956c

View File

@ -59,7 +59,7 @@ import android.util.Log;
* 5. RenderTheme calls IRenderCallback functions with style information * 5. RenderTheme calls IRenderCallback functions with style information
* 6. Styled items become added to MapTile.layers... roughly * 6. Styled items become added to MapTile.layers... roughly
*/ */
public class MapTileLoader extends TileLoader implements IRenderCallback, ITileDataSink { public class MapTileLoader extends TileLoader implements IRenderCallback, ITileDataSink {
private static final String TAG = MapTileLoader.class.getName(); private static final String TAG = MapTileLoader.class.getName();
@ -69,15 +69,15 @@ public class MapTileLoader extends TileLoader implements IRenderCallback, ITileD
public static final byte STROKE_MIN_ZOOM_LEVEL = 12; public static final byte STROKE_MIN_ZOOM_LEVEL = 12;
public static final byte STROKE_MAX_ZOOM_LEVEL = 17; public static final byte STROKE_MAX_ZOOM_LEVEL = 17;
// private static final Tag[] debugTagWay = { new Tag("debug", "way") }; private static final Tag[] debugTagWay = { new Tag("debug", "way") };
// private static final Tag[] debugTagArea = { new Tag("debug", "area") }; private static final Tag[] debugTagArea = { new Tag("debug", "area") };
// replacement for variable value tags that should not be matched by RenderTheme // replacement for variable value tags that should not be matched by RenderTheme
// FIXME make this general, maybe subclass tags // FIXME make this general, maybe subclass tags
private static final Tag mTagEmptyName = new Tag(Tag.TAG_KEY_NAME, null, false); private static final Tag mTagEmptyName = new Tag(Tag.TAG_KEY_NAME, null, false);
private static final Tag mTagEmptyHouseNr = new Tag(Tag.TAG_KEY_HOUSE_NUMBER, null, false); private static final Tag mTagEmptyHouseNr = new Tag(Tag.TAG_KEY_HOUSE_NUMBER, null, false);
// private final MapElement mDebugWay, mDebugPoint; // private final MapElement mDebugWay, mDebugPoint;
private static DebugSettings debug; private static DebugSettings debug;
@ -123,24 +123,25 @@ public class MapTileLoader extends TileLoader implements IRenderCallback, ITileD
mClipper = new LineClipper(0, 0, Tile.SIZE, Tile.SIZE, true); mClipper = new LineClipper(0, 0, Tile.SIZE, Tile.SIZE, true);
// MapElement m = mDebugWay = new MapElement(); // MapElement m = mDebugWay = new MapElement();
// m.startLine(); // m.startLine();
// int s = Tile.SIZE; // int s = Tile.SIZE;
// m.addPoint(0, 0); // m.addPoint(0, 0);
// m.addPoint(0, s); // m.addPoint(0, s);
// m.addPoint(s, s); // m.addPoint(s, s);
// m.addPoint(s, 0); // m.addPoint(s, 0);
// m.addPoint(0, 0); // m.addPoint(0, 0);
// m.tags = new Tag[] { new Tag("debug", "box") }; // m.tags = new Tag[] { new Tag("debug", "box") };
// m.type = GeometryType.LINE; // m.type = GeometryType.LINE;
// //
// m = mDebugPoint = new MapElement(); // m = mDebugPoint = new MapElement();
// m.startPoints(); // m.startPoints();
// m.addPoint(s >> 1, 10); // m.addPoint(s >> 1, 10);
// m.type = GeometryType.POINT; // m.type = GeometryType.POINT;
} }
/* (non-Javadoc) /*
* (non-Javadoc)
* @see org.oscim.layers.tile.TileLoader#cleanup() * @see org.oscim.layers.tile.TileLoader#cleanup()
*/ */
@Override @Override
@ -148,8 +149,11 @@ public class MapTileLoader extends TileLoader implements IRenderCallback, ITileD
mTileDataSource.destroy(); mTileDataSource.destroy();
} }
/* (non-Javadoc) /*
* @see org.oscim.layers.tile.TileLoader#executeJob(org.oscim.layers.tile.MapTile) * (non-Javadoc)
* @see
* org.oscim.layers.tile.TileLoader#executeJob(org.oscim.layers.tile.MapTile
* )
*/ */
@Override @Override
public boolean executeJob(MapTile mapTile) { public boolean executeJob(MapTile mapTile) {
@ -195,20 +199,20 @@ public class MapTileLoader extends TileLoader implements IRenderCallback, ITileD
return false; return false;
} }
// if (debug.drawTileFrames) { // if (debug.drawTileFrames) {
// // draw tile coordinate // // draw tile coordinate
// mTagName = new Tag("name", mTile.toString(), false); // mTagName = new Tag("name", mTile.toString(), false);
// mElement = mDebugPoint; // mElement = mDebugPoint;
// RenderInstruction[] ri; // RenderInstruction[] ri;
// ri = renderTheme.matchNode(debugTagWay, (byte) 0); // ri = renderTheme.matchNode(debugTagWay, (byte) 0);
// renderNode(ri); // renderNode(ri);
// //
// // draw tile box // // draw tile box
// mElement = mDebugWay; // mElement = mDebugWay;
// mDrawingLayer = 100 * renderLevels; // mDrawingLayer = 100 * renderLevels;
// ri = renderTheme.matchWay(mDebugWay.tags, (byte) 0, false); // ri = renderTheme.matchWay(mDebugWay.tags, (byte) 0, false);
// renderWay(ri); // renderWay(ri);
// } // }
mTile = null; mTile = null;
return true; return true;
@ -272,11 +276,26 @@ public class MapTileLoader extends TileLoader implements IRenderCallback, ITileD
mTagHouseNr = tags[i]; mTagHouseNr = tags[i];
tags[i] = mTagEmptyHouseNr; tags[i] = mTagEmptyHouseNr;
} }
} else if (mTile.zoomLevel >= 17 && } else if (mTile.zoomLevel > 16) {
// FIXME, allow overlays to intercept // FIXME, allow overlays to intercept
// this, or use a theme option for this // this, or use a theme option for this
key == Tag.TAG_KEY_BUILDING) { if (key == Tag.TAG_KEY_BUILDING)
mRenderBuildingModel = true; mRenderBuildingModel = true;
else if (key == Tag.KEY_HEIGHT) {
try {
mElement.height = Integer.parseInt(tags[i].value);
Log.d(TAG, "height: " + mElement.height);
} catch (Exception e) {
}
}
else if (key == Tag.KEY_MIN_HEIGHT) {
try {
mElement.minHeight = Integer.parseInt(tags[i].value);
Log.d(TAG, "minHeight: " + mElement.minHeight);
} catch (Exception e) {
}
}
} }
} }
return true; return true;
@ -293,13 +312,11 @@ public class MapTileLoader extends TileLoader implements IRenderCallback, ITileD
filterTags(element.tags); filterTags(element.tags);
// get render instructions // get render instructions
//RenderInstruction[] ri = renderTheme.matchNode(element.tags, mTile.zoomLevel);
RenderInstruction[] ri = renderTheme.matchElement(element, mTile.zoomLevel); RenderInstruction[] ri = renderTheme.matchElement(element, mTile.zoomLevel);
if (ri != null) if (ri != null)
renderNode(ri); renderNode(ri);
} } else {
else {
// replace tags that should not be cached in Rendertheme (e.g. name) // replace tags that should not be cached in Rendertheme (e.g. name)
if (!filterTags(element.tags)) if (!filterTags(element.tags))
@ -309,10 +326,6 @@ public class MapTileLoader extends TileLoader implements IRenderCallback, ITileD
mDrawingLayer = getValidLayer(element.layer) * renderLevels; mDrawingLayer = getValidLayer(element.layer) * renderLevels;
// get render instructions
// RenderInstruction[] ri = renderTheme.matchWay(element.tags,
// (byte) (mTile.zoomLevel + 0), closed);
RenderInstruction[] ri = renderTheme.matchElement(element, mTile.zoomLevel); RenderInstruction[] ri = renderTheme.matchElement(element, mTile.zoomLevel);
renderWay(ri); renderWay(ri);
@ -329,15 +342,14 @@ public class MapTileLoader extends TileLoader implements IRenderCallback, ITileD
private void debugUnmatched(boolean closed, Tag[] tags) { private void debugUnmatched(boolean closed, Tag[] tags) {
Log.d(TAG, "DBG way not matched: " + closed + " " Log.d(TAG, "DBG way not matched: " + closed + " "
+ Arrays.deepToString(tags)); + Arrays.deepToString(tags));
mElement = null;
// mTagName = new Tag("name", tags[0].key + ":" mTagName = new Tag("name", tags[0].key + ":"
// + tags[0].value, false); + tags[0].value, false);
//
// RenderInstruction[] ri; mElement.tags = closed ? debugTagArea : debugTagWay;
// ri = renderTheme.matchWay(closed ? debugTagArea : debugTagWay, RenderInstruction[] ri = renderTheme.matchElement(mElement, mTile.zoomLevel);
// (byte) 0, true);
// renderWay(ri);
// renderWay(ri);
} }
private void renderWay(RenderInstruction[] ri) { private void renderWay(RenderInstruction[] ri) {