add TileGridLayer wrapper for GridRenderer
set GridRenderer line- and text-style
This commit is contained in:
parent
baceacccd5
commit
683e0733a5
@ -23,13 +23,12 @@ import org.oscim.android.MapActivity;
|
||||
import org.oscim.android.MapView;
|
||||
import org.oscim.android.canvas.AndroidGraphics;
|
||||
import org.oscim.core.GeoPoint;
|
||||
import org.oscim.layers.GenericLayer;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.marker.ItemizedIconLayer;
|
||||
import org.oscim.layers.marker.ItemizedIconLayer.OnItemGestureListener;
|
||||
import org.oscim.layers.marker.MarkerItem;
|
||||
import org.oscim.layers.marker.MarkerItem.HotspotPlace;
|
||||
import org.oscim.layers.marker.MarkerSymbol;
|
||||
import org.oscim.renderer.GridRenderer;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
@ -65,7 +64,7 @@ public class MarkerOverlayActivity extends MapActivity implements OnItemGestureL
|
||||
|
||||
markerLayer.addItems(pts);
|
||||
|
||||
mMap.getLayers().add(new GenericLayer(mMap, new GridRenderer()));
|
||||
mMap.getLayers().add(new TileGridLayer(mMap));
|
||||
mMap.setMapPosition(0, 0, 1);
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
import org.oscim.layers.tile.vector.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.map.Layers;
|
||||
import org.oscim.theme.InternalRenderTheme;
|
||||
import org.oscim.tiling.TileRenderer;
|
||||
|
||||
@ -31,10 +32,11 @@ public class SimpleMapActivity extends BaseMapActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
TileRenderer l = mBaseLayer.getTileRenderer();
|
||||
mMap.getLayers().add(new BuildingLayer(mMap, l));
|
||||
mMap.getLayers().add(new LabelLayer(mMap, l));
|
||||
Layers layers = mMap.getLayers();
|
||||
layers.add(new BuildingLayer(mMap, l));
|
||||
layers.add(new LabelLayer(mMap, l));
|
||||
|
||||
//mMap.getLayers().add(new GenericLayer(mMap, new GridRenderer()));
|
||||
//layers.add(new TileGridLayer(mMap));
|
||||
|
||||
mMap.setTheme(InternalRenderTheme.DEFAULT);
|
||||
//mMap.setTheme(InternalRenderTheme.TRONRENDER);
|
||||
|
@ -19,12 +19,13 @@ package org.oscim.gdx;
|
||||
import org.oscim.backend.AssetAdapter;
|
||||
import org.oscim.core.Tile;
|
||||
import org.oscim.layers.GenericLayer;
|
||||
import org.oscim.layers.TileGridLayer;
|
||||
import org.oscim.layers.tile.vector.BuildingLayer;
|
||||
import org.oscim.layers.tile.vector.VectorTileLayer;
|
||||
import org.oscim.layers.tile.vector.labeling.LabelLayer;
|
||||
import org.oscim.map.Layers;
|
||||
import org.oscim.map.Map;
|
||||
import org.oscim.map.Viewport;
|
||||
import org.oscim.renderer.GridRenderer;
|
||||
import org.oscim.renderer.MapRenderer;
|
||||
import org.oscim.theme.InternalRenderTheme;
|
||||
import org.oscim.tiling.source.TileSource;
|
||||
@ -128,23 +129,21 @@ public abstract class GdxMap implements ApplicationListener {
|
||||
|
||||
protected void initDefaultLayers(TileSource tileSource, boolean tileGrid, boolean labels,
|
||||
boolean buildings) {
|
||||
Layers layers = mMap.getLayers();
|
||||
|
||||
if (tileSource != null) {
|
||||
mMapLayer = mMap.setBaseMap(tileSource);
|
||||
mMap.setTheme(InternalRenderTheme.DEFAULT);
|
||||
|
||||
if (buildings)
|
||||
mMap.getLayers()
|
||||
.add(new BuildingLayer(mMap, mMapLayer.getTileRenderer()));
|
||||
layers.add(new BuildingLayer(mMap, mMapLayer.getTileRenderer()));
|
||||
|
||||
if (labels)
|
||||
mMap.getLayers()
|
||||
.add(new LabelLayer(mMap, mMapLayer.getTileRenderer()));
|
||||
layers.add(new LabelLayer(mMap, mMapLayer.getTileRenderer()));
|
||||
}
|
||||
|
||||
if (tileGrid)
|
||||
mMap.getLayers()
|
||||
.add(new GenericLayer(mMap, new GridRenderer()));
|
||||
layers.add(new TileGridLayer(mMap));
|
||||
}
|
||||
|
||||
// Stage ui;
|
||||
@ -303,7 +302,7 @@ public abstract class GdxMap implements ApplicationListener {
|
||||
|
||||
case Input.Keys.G:
|
||||
if (mGridLayer == null) {
|
||||
mGridLayer = new GenericLayer(mMap, new GridRenderer());
|
||||
mGridLayer = new TileGridLayer(mMap);
|
||||
mGridLayer.setEnabled(true);
|
||||
mMap.getLayers().add(mGridLayer);
|
||||
} else {
|
||||
|
12
vtm/src/org/oscim/layers/TileGridLayer.java
Normal file
12
vtm/src/org/oscim/layers/TileGridLayer.java
Normal file
@ -0,0 +1,12 @@
|
||||
package org.oscim.layers;
|
||||
|
||||
import org.oscim.map.Map;
|
||||
import org.oscim.renderer.GridRenderer;
|
||||
|
||||
public class TileGridLayer extends GenericLayer {
|
||||
|
||||
public TileGridLayer(Map map) {
|
||||
super(map, new GridRenderer());
|
||||
}
|
||||
|
||||
}
|
@ -29,18 +29,20 @@ import org.oscim.theme.styles.Line;
|
||||
import org.oscim.theme.styles.Text;
|
||||
|
||||
public class GridRenderer extends ElementRenderer {
|
||||
// private final static String TILE_FORMAT = "%d/%d/%d";
|
||||
private final TextLayer mTextLayer;
|
||||
private final Text mText;
|
||||
|
||||
private final LineLayer mLineLayer;
|
||||
|
||||
private final GeometryBuffer mLines;
|
||||
private final StringBuffer mStringBuffer;
|
||||
|
||||
private int mCurX, mCurY, mCurZ;
|
||||
|
||||
public GridRenderer() {
|
||||
this(1, new Line(Color.LTGRAY, 1.2f, Cap.BUTT),
|
||||
Text.createText(22, 0, Color.RED, 0, false));
|
||||
}
|
||||
|
||||
public GridRenderer(int numLines, Line lineStyle, Text textStyle) {
|
||||
int size = Tile.SIZE;
|
||||
|
||||
// not needed to set but we know:
|
||||
@ -50,25 +52,33 @@ public class GridRenderer extends ElementRenderer {
|
||||
float pos = -size * 4;
|
||||
|
||||
// 8 vertical lines
|
||||
for (int i = 0; i < 8; i++) {
|
||||
float x = pos + i * size;
|
||||
for (int i = 0; i < 8 * numLines; i++) {
|
||||
float x = pos + i * size / numLines;
|
||||
mLines.startLine();
|
||||
mLines.addPoint(x, pos);
|
||||
mLines.addPoint(x, pos + size * 8);
|
||||
}
|
||||
|
||||
// 8 horizontal lines
|
||||
for (int j = 0; j < 8; j++) {
|
||||
float y = pos + j * size;
|
||||
for (int j = 0; j < 8 * numLines; j++) {
|
||||
float y = pos + j * size / numLines;
|
||||
mLines.startLine();
|
||||
mLines.addPoint(pos, y);
|
||||
mLines.addPoint(pos + size * 8, y);
|
||||
}
|
||||
|
||||
mText = Text.createText(22, 0, Color.RED, 0, false);
|
||||
mText = textStyle;
|
||||
|
||||
mTextLayer = layers.addTextLayer(new TextLayer());
|
||||
mLineLayer = layers.addLineLayer(0, new Line(0x66000066, 1.5f, Cap.BUTT));
|
||||
if (mText != null) {
|
||||
mTextLayer = layers.addTextLayer(new TextLayer());
|
||||
} else {
|
||||
mTextLayer = null;
|
||||
}
|
||||
|
||||
mLineLayer = layers.addLineLayer(0, lineStyle);
|
||||
mLineLayer.addLine(mLines);
|
||||
|
||||
mStringBuffer = new StringBuffer(32);
|
||||
}
|
||||
|
||||
private void addLabels(int x, int y, int z) {
|
||||
@ -77,15 +87,20 @@ public class GridRenderer extends ElementRenderer {
|
||||
TextLayer tl = mTextLayer;
|
||||
tl.clear();
|
||||
|
||||
StringBuffer sb = mStringBuffer;
|
||||
|
||||
for (int yy = -2; yy < 2; yy++) {
|
||||
for (int xx = -2; xx < 2; xx++) {
|
||||
|
||||
String label = Integer.valueOf(x + xx) + "/" +
|
||||
Integer.valueOf(y + yy) + "/" +
|
||||
Integer.valueOf(z);
|
||||
sb.setLength(0);
|
||||
sb.append(x + xx);
|
||||
sb.append(" / ");
|
||||
sb.append(y + yy);
|
||||
sb.append(" / ");
|
||||
sb.append(z);
|
||||
|
||||
TextItem ti = TextItem.pool.get();
|
||||
ti.set(s * xx + s / 2, s * yy + s / 2, label, mText);
|
||||
ti.set(s * xx + s / 2, s * yy + s / 2, sb.toString(), mText);
|
||||
|
||||
tl.addText(ti);
|
||||
}
|
||||
@ -120,10 +135,11 @@ public class GridRenderer extends ElementRenderer {
|
||||
mMapPosition.y = (double) y / z;
|
||||
mMapPosition.scale = z;
|
||||
|
||||
addLabels(x, y, pos.zoomLevel);
|
||||
|
||||
mLineLayer.clear();
|
||||
mLineLayer.addLine(mLines);
|
||||
if (mText != null) {
|
||||
addLabels(x, y, pos.zoomLevel);
|
||||
mLineLayer.clear();
|
||||
mLineLayer.addLine(mLines);
|
||||
}
|
||||
|
||||
compile();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user