pass VectorTileLayer to LabelLayer and BuildingLayer

This commit is contained in:
Hannes Janetzek 2014-02-07 17:40:30 +01:00
parent db780d9939
commit dd954e3416
5 changed files with 16 additions and 17 deletions

View File

@ -101,7 +101,7 @@ public class MapsforgeMapActivity extends MapActivity {
VectorTileLayer l = mMap.setBaseMap(mTileSource); VectorTileLayer l = mMap.setBaseMap(mTileSource);
mMap.setTheme(InternalRenderTheme.DEFAULT); mMap.setTheme(InternalRenderTheme.DEFAULT);
mMap.getLayers().add(new LabelLayer(mMap, l.getTileRenderer())); mMap.getLayers().add(new LabelLayer(mMap, l));
MapInfo info = mTileSource.getMapInfo(); MapInfo info = mTileSource.getMapInfo();
if (info.boundingBox != null) { if (info.boundingBox != null) {

View File

@ -15,12 +15,11 @@
* this program. If not, see <http://www.gnu.org/licenses/>. * this program. If not, see <http://www.gnu.org/licenses/>.
*/package org.oscim.android.test; */package org.oscim.android.test;
import org.oscim.android.MapScaleBar; import org.oscim.layers.TileGridLayer;
import org.oscim.layers.tile.vector.BuildingLayer; import org.oscim.layers.tile.vector.BuildingLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer; import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.map.Layers; import org.oscim.map.Layers;
import org.oscim.theme.InternalRenderTheme; import org.oscim.theme.InternalRenderTheme;
import org.oscim.tiling.TileRenderer;
import android.os.Bundle; import android.os.Bundle;
import android.view.Menu; import android.view.Menu;
@ -32,19 +31,17 @@ public class SimpleMapActivity extends BaseMapActivity {
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
TileRenderer l = mBaseLayer.getTileRenderer();
Layers layers = mMap.getLayers(); Layers layers = mMap.getLayers();
layers.add(new BuildingLayer(mMap, l)); layers.add(new BuildingLayer(mMap, mBaseLayer));
layers.add(new LabelLayer(mMap, l)); layers.add(new LabelLayer(mMap, mBaseLayer));
//layers.add(new TileGridLayer(mMap)); layers.add(new TileGridLayer(mMap));
layers.add(new MapScaleBar(mMapView));
mMap.setTheme(InternalRenderTheme.DEFAULT); mMap.setTheme(InternalRenderTheme.DEFAULT);
//mMap.setTheme(InternalRenderTheme.TRONRENDER); //mMap.setTheme(InternalRenderTheme.TRONRENDER);
//mMap.setTheme(InternalRenderTheme.OSMARENDER); //mMap.setTheme(InternalRenderTheme.OSMARENDER);
mMap.setMapPosition(53.08, 8.83, Math.pow(2, 14)); mMap.setMapPosition(53.08, 8.83, Math.pow(2, 10));
} }
@Override @Override

View File

@ -136,10 +136,10 @@ public abstract class GdxMap implements ApplicationListener {
mMap.setTheme(InternalRenderTheme.DEFAULT); mMap.setTheme(InternalRenderTheme.DEFAULT);
if (buildings) if (buildings)
layers.add(new BuildingLayer(mMap, mMapLayer.getTileRenderer())); layers.add(new BuildingLayer(mMap, mMapLayer));
if (labels) if (labels)
layers.add(new LabelLayer(mMap, mMapLayer.getTileRenderer())); layers.add(new LabelLayer(mMap, mMapLayer));
} }
if (tileGrid) if (tileGrid)

View File

@ -21,7 +21,6 @@ import org.oscim.layers.Layer;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.renderer.ExtrusionRenderer; import org.oscim.renderer.ExtrusionRenderer;
import org.oscim.renderer.MapRenderer.Matrices; import org.oscim.renderer.MapRenderer.Matrices;
import org.oscim.tiling.TileRenderer;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
public class BuildingLayer extends Layer { public class BuildingLayer extends Layer {
@ -29,9 +28,9 @@ public class BuildingLayer extends Layer {
final ExtrusionRenderer mExtLayer; final ExtrusionRenderer mExtLayer;
public BuildingLayer(Map map, TileRenderer tileRenderer) { public BuildingLayer(Map map, VectorTileLayer tileLayer) {
super(map); super(map);
mExtLayer = new ExtrusionRenderer(tileRenderer) { mExtLayer = new ExtrusionRenderer(tileLayer.getTileRenderer()) {
private long mStartTime; private long mStartTime;
@Override @Override

View File

@ -21,8 +21,9 @@ import org.oscim.event.EventDispatcher.Event;
import org.oscim.event.EventDispatcher.Listener; import org.oscim.event.EventDispatcher.Listener;
import org.oscim.event.MotionEvent; import org.oscim.event.MotionEvent;
import org.oscim.layers.Layer; import org.oscim.layers.Layer;
import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.tiling.TileRenderer; import org.oscim.tiling.MapTile;
import org.oscim.tiling.TileManager; import org.oscim.tiling.TileManager;
import org.oscim.utils.async.SimpleWorker; import org.oscim.utils.async.SimpleWorker;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -30,6 +31,7 @@ import org.slf4j.LoggerFactory;
public class LabelLayer extends Layer implements Map.InputListener, Map.UpdateListener, public class LabelLayer extends Layer implements Map.InputListener, Map.UpdateListener,
Listener<MapTile> { Listener<MapTile> {
static final Logger log = LoggerFactory.getLogger(LabelLayer.class); static final Logger log = LoggerFactory.getLogger(LabelLayer.class);
private final static long MAX_RELABEL_DELAY = 100; private final static long MAX_RELABEL_DELAY = 100;
@ -37,10 +39,11 @@ public class LabelLayer extends Layer implements Map.InputListener, Map.UpdateLi
private final LabelPlacement mLabelPlacer; private final LabelPlacement mLabelPlacer;
private final Worker mWorker; private final Worker mWorker;
public LabelLayer(Map map, TileRenderer tileRenderer) { public LabelLayer(Map map, VectorTileLayer l) {
super(map); super(map);
l.getManager().events.bind(this); l.getManager().events.bind(this);
mLabelPlacer = new LabelPlacement(map, tileRenderer);
mLabelPlacer = new LabelPlacement(map, l.getTileRenderer());
mWorker = new Worker(map); mWorker = new Worker(map);
mRenderer = new TextRenderer(mWorker); mRenderer = new TextRenderer(mWorker);
} }