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