From b32b5ceb0b0619e8471c5f2597a104d8d1a5b261 Mon Sep 17 00:00:00 2001 From: Emux Date: Wed, 3 Aug 2016 15:14:48 +0300 Subject: [PATCH] Line texture: JTS PathLayer support, #105 --- .../oscim/android/test/LineTexActivity.java | 113 +++++++------- .../android/test/VectorLayerMapActivity.java | 23 ++- .../org/oscim/layers/vector/PathLayer.java | 5 +- .../org/oscim/layers/vector/VectorLayer.java | 37 ++++- .../oscim/layers/vector/geometries/Style.java | 140 +++++++++++------ .../src/org/oscim/test/LineTexTest.java | 142 ++++-------------- .../src/org/oscim/test/VectorLayerTest.java | 18 ++- 7 files changed, 237 insertions(+), 241 deletions(-) diff --git a/vtm-android-example/src/org/oscim/android/test/LineTexActivity.java b/vtm-android-example/src/org/oscim/android/test/LineTexActivity.java index 1f550d43..962ae6b1 100644 --- a/vtm-android-example/src/org/oscim/android/test/LineTexActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/LineTexActivity.java @@ -18,14 +18,15 @@ package org.oscim.android.test; import android.os.Bundle; -import android.os.SystemClock; import org.oscim.backend.CanvasAdapter; import org.oscim.backend.canvas.Color; -import org.oscim.core.GeoPoint; -import org.oscim.layers.PathLayer; +import org.oscim.core.MapPosition; +import org.oscim.event.Event; +import org.oscim.layers.vector.PathLayer; +import org.oscim.layers.vector.geometries.Style; +import org.oscim.map.Map; import org.oscim.renderer.bucket.TextureItem; -import org.oscim.theme.styles.LineStyle; import java.util.ArrayList; import java.util.List; @@ -38,23 +39,52 @@ import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; */ public class LineTexActivity extends BitmapTileMapActivity { + private static final boolean ANIMATION = false; + + private List mPathLayers = new ArrayList<>(); + public LineTexActivity() { super(STAMEN_TONER.build()); } - TextureItem tex; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBitmapLayer.tileRenderer().setBitmapAlpha(0.5f); - tex = new TextureItem(CanvasAdapter.getBitmapAsset("", "patterns/pike.png")); + TextureItem tex = new TextureItem(CanvasAdapter.getBitmapAsset("", "patterns/pike.png")); tex.mipmap = true; - createLayers(1, true); + for (double lat = -90; lat <= 90; lat += 5) { + int c = Color.fade(Color.rainbow((float) (lat + 90) / 180), 0.5f); + Style style = Style.builder() + .stippleColor(c) + .stipple(24) + .stippleWidth(1) + .strokeWidth(12) + .strokeColor(c) + .fixed(true) + .texture(tex) + .build(); + PathLayer pathLayer = new PathLayer(mMap, style); + mMap.layers().add(pathLayer); + mPathLayers.add(pathLayer); + } - //looooop(); + if (ANIMATION) + mMap.events.bind(new Map.UpdateListener() { + @Override + public void onMapEvent(Event e, MapPosition mapPosition) { + //if (e == Map.UPDATE_EVENT) { + long t = System.currentTimeMillis(); + float pos = t % 20000 / 10000f - 1f; + createLayers(pos); + mMap.updateMap(true); + //} + } + }); + else + createLayers(1); } @Override @@ -65,40 +95,16 @@ public class LineTexActivity extends BitmapTileMapActivity { mMap.setMapPosition(0, 0, 1 << 2); } - void looooop() { - mMap.postDelayed(new Runnable() { - @Override - public void run() { - long t = SystemClock.uptimeMillis(); - float pos = t % 20000 / 10000f - 1f; - createLayers(pos, false); - //Samples.log.debug("update took" + (SystemClock.uptimeMillis() - t) + " " + pos); - looooop(); - redraw(); - } - }, 50); - } - - void redraw() { - mMap.render(); - } - - ArrayList mPathLayers = new ArrayList<>(); - - void createLayers(float pos, boolean init) { + void createLayers(float pos) { int i = 0; - for (double lat = -90; lat <= 90; lat += 5) { - List pts = new ArrayList<>(); - + double[] packedCoordinates = new double[360 + 2]; + //List pts = new ArrayList<>(); + int c = 0; for (double lon = -180; lon <= 180; lon += 2) { //pts.add(new GeoPoint(lat, lon)); - double longitude = lon + (pos * 180); - if (longitude < -180) - longitude += 360; - if (longitude > 180) - longitude -= 360; + double longitude = lon; double latitude = lat + (pos * 90); if (latitude < -90) @@ -108,32 +114,15 @@ public class LineTexActivity extends BitmapTileMapActivity { latitude += Math.sin((Math.abs(pos) * (lon / Math.PI))); - pts.add(new GeoPoint(latitude, longitude)); - } - PathLayer pathLayer; - if (init) { - int c = Color.fade(Color.rainbow((float) (lat + 90) / 180), 0.9f); - - LineStyle style = LineStyle.builder() - .stippleColor(c) - .stipple(24) - .stippleWidth(1) - .strokeWidth(12) - .strokeColor(c) - .fixed(true) - .texture(tex) - .build(); - - pathLayer = new PathLayer(mMap, style); - - mMap.layers().add(pathLayer); - mPathLayers.add(pathLayer); - } else { - pathLayer = mPathLayers.get(i++); + packedCoordinates[c++] = longitude; + packedCoordinates[c++] = latitude; } - pathLayer.setPoints(pts); + //LineString line = new LineString(factory.create(packedCoordinates, 2), geomFactory); + //mPathLayers.get(i++).setLineString(line); + + mPathLayers.get(i++).setLineString(packedCoordinates); + } - } } diff --git a/vtm-android-example/src/org/oscim/android/test/VectorLayerMapActivity.java b/vtm-android-example/src/org/oscim/android/test/VectorLayerMapActivity.java index 666864c0..28130af5 100644 --- a/vtm-android-example/src/org/oscim/android/test/VectorLayerMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/VectorLayerMapActivity.java @@ -24,16 +24,20 @@ import org.oscim.layers.TileGridLayer; import org.oscim.layers.vector.VectorLayer; import org.oscim.layers.vector.geometries.PointDrawable; import org.oscim.layers.vector.geometries.Style; -import org.oscim.theme.VtmThemes; import org.oscim.utils.ColorUtil; -public class VectorLayerMapActivity extends BaseMapActivity { +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; + +public class VectorLayerMapActivity extends BitmapTileMapActivity { + + public VectorLayerMapActivity() { + super(STAMEN_TONER.build()); + } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - mMap.setTheme(VtmThemes.DEFAULT); + mBitmapLayer.tileRenderer().setBitmapAlpha(0.5f); VectorLayer vectorLayer = new VectorLayer(mMap); @@ -74,13 +78,13 @@ public class VectorLayerMapActivity extends BaseMapActivity { Style.Builder sb = Style.builder() .buffer(0.5) .fillColor(Color.RED) - .fillAlpha(0.2); + .fillAlpha(0.2f); for (int i = 0; i < 2000; i++) { Style style = sb.buffer(Math.random() + 0.2) .fillColor(ColorUtil.setHue(Color.RED, (int) (Math.random() * 50) / 50.0)) - .fillAlpha(0.5) + .fillAlpha(0.5f) .build(); vectorLayer.add(new PointDrawable(Math.random() * 180 - 90, @@ -88,10 +92,17 @@ public class VectorLayerMapActivity extends BaseMapActivity { style)); } + vectorLayer.update(); mMap.layers().add(vectorLayer); mMap.layers().add(new TileGridLayer(mMap, 0xff222222, 1.2f, 1)); + } + @Override + protected void onResume() { + super.onResume(); + + /* ignore saved position */ mMap.setMapPosition(0, 0, 1 << 2); } } diff --git a/vtm-jts/src/org/oscim/layers/vector/PathLayer.java b/vtm-jts/src/org/oscim/layers/vector/PathLayer.java index 66570dd5..12b3d03e 100644 --- a/vtm-jts/src/org/oscim/layers/vector/PathLayer.java +++ b/vtm-jts/src/org/oscim/layers/vector/PathLayer.java @@ -30,7 +30,7 @@ import java.util.ArrayList; import java.util.List; /** - * This class draws a path line in given color. + * This class draws a path line in given color or texture. */ public class PathLayer extends VectorLayer { @@ -136,8 +136,7 @@ public class PathLayer extends VectorLayer { public void addGreatCircle(GeoPoint startPoint, GeoPoint endPoint, final int numberOfPoints) { /* adapted from page - * http://compastic.blogspot.co.uk/2011/07/how-to-draw-great-circle-on-map - * -in.html + * http://compastic.blogspot.co.uk/2011/07/how-to-draw-great-circle-on-map-in.html * which was adapted from page http://maps.forum.nu/gm_flight_path.html */ GeomBuilder gb = new GeomBuilder(); diff --git a/vtm-jts/src/org/oscim/layers/vector/VectorLayer.java b/vtm-jts/src/org/oscim/layers/vector/VectorLayer.java index 57963510..b3d7eb65 100644 --- a/vtm-jts/src/org/oscim/layers/vector/VectorLayer.java +++ b/vtm-jts/src/org/oscim/layers/vector/VectorLayer.java @@ -1,3 +1,19 @@ +/* + * Copyright 2016 devemux86 + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ package org.oscim.layers.vector; import com.vividsolutions.jts.geom.Envelope; @@ -234,9 +250,26 @@ public class VectorLayer extends AbstractVectorLayer { protected void drawLine(Task t, int level, Geometry line, Style style) { - LineBucket ll = t.buckets.getLineBucket(level); + LineBucket ll; + if (style.stipple == 0 && style.texture == null) + ll = t.buckets.getLineBucket(level); + else + ll = t.buckets.getLineTexBucket(level); if (ll.line == null) { - ll.line = new LineStyle(0, style.strokeColor, style.strokeWidth); + if (style.stipple == 0 && style.texture == null) + ll.line = new LineStyle(style.strokeColor, style.strokeWidth, style.cap); + else + ll.line = LineStyle.builder() + .cap(style.cap) + .color(style.strokeColor) + .fixed(style.fixed) + .level(0) + .stipple(style.stipple) + .stippleColor(style.stippleColor) + .stippleWidth(style.stippleWidth) + .strokeWidth(style.strokeWidth) + .texture(style.texture) + .build(); } if (style.generalization != Style.GENERALIZATION_NONE) { diff --git a/vtm-jts/src/org/oscim/layers/vector/geometries/Style.java b/vtm-jts/src/org/oscim/layers/vector/geometries/Style.java index 3d4ee0ab..b0a41b4e 100644 --- a/vtm-jts/src/org/oscim/layers/vector/geometries/Style.java +++ b/vtm-jts/src/org/oscim/layers/vector/geometries/Style.java @@ -1,6 +1,26 @@ +/* + * Copyright 2016 devemux86 + * + * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). + * + * This program is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with + * this program. If not, see . + */ package org.oscim.layers.vector.geometries; import org.oscim.backend.canvas.Color; +import org.oscim.backend.canvas.Paint; +import org.oscim.renderer.bucket.TextureItem; + +import static org.oscim.backend.canvas.Color.parseColor; /** * Class encapsulating style information for drawing geometries on the map. @@ -23,6 +43,13 @@ public class Style { public final int generalization; + public final Paint.Cap cap; + public final boolean fixed; + public final int stipple; + public final int stippleColor; + public final float stippleWidth; + public final TextureItem texture; + private Style(Builder builder) { strokeWidth = builder.strokeWidth; strokeColor = builder.strokeColor; @@ -34,6 +61,13 @@ public class Style { scalingZoomLevel = builder.scalingZoomLevel; generalization = builder.generalization; + + cap = builder.cap; + fixed = builder.fixed; + stipple = builder.stipple; + stippleColor = builder.stippleColor; + stippleWidth = builder.stippleWidth; + texture = builder.texture; } /** @@ -58,14 +92,18 @@ public class Style { private int generalization = GENERALIZATION_NONE; - protected Builder() { + public Paint.Cap cap = Paint.Cap.ROUND; + public boolean fixed = false; + public int stipple = 0; + public int stippleColor = Color.GRAY; + public float stippleWidth = 1; + public TextureItem texture = null; + protected Builder() { } /** * Builds the GeometryStyle from the specified parameters. - * - * @return */ public Style build() { return new Style(this); @@ -73,9 +111,6 @@ public class Style { /** * Sets the line width for the geometry's line or outline. - * - * @param lineWidth - * @return */ public Builder strokeWidth(float lineWidth) { this.strokeWidth = lineWidth; @@ -84,20 +119,22 @@ public class Style { /** * Sets the color for the geometry's line or outline. - * - * @param stokeColor - * @return */ - public Builder strokeColor(int stokeColor) { - this.strokeColor = stokeColor; + public Builder strokeColor(int strokeColor) { + this.strokeColor = strokeColor; + return this; + } + + /** + * Sets the color for the geometry's line or outline. + */ + public Builder strokeColor(String strokeColor) { + this.strokeColor = parseColor(strokeColor); return this; } /** * Sets the color for the geometry's area. - * - * @param fillColor - * @return */ public Builder fillColor(int fillColor) { this.fillColor = fillColor; @@ -105,13 +142,18 @@ public class Style { } /** - * Sets alpha channel value for the geometry's area. - * - * @param fillAlpha - * @return + * Sets the color for the geometry's area. */ - public Builder fillAlpha(double fillAlpha) { - this.fillAlpha = (float) fillAlpha; + public Builder fillColor(String fillColor) { + this.fillColor = parseColor(fillColor); + return this; + } + + /** + * Sets alpha channel value for the geometry's area. + */ + public Builder fillAlpha(float fillAlpha) { + this.fillAlpha = fillAlpha; return this; } @@ -119,9 +161,6 @@ public class Style { * This function has effect only on Points: * use it to control the size on the circle that * will be built from a buffer around the point. - * - * @param buffer - * @return itself */ public Builder buffer(double buffer) { this.buffer = buffer; @@ -132,8 +171,6 @@ public class Style { * This function has effect only on Points: * use it to specify from which zoom level the point * should stop decreasing in size and "stick to the map". - * - * @param zoomlvl */ public Builder scaleZoomLevel(int zoomlvl) { this.scalingZoomLevel = zoomlvl; @@ -144,42 +181,46 @@ public class Style { * Sets generalization factor for the geometry. * Use predefined GeometryStyle.GENERALIZATION_HIGH, * GENERALIZATION_MEDIUM or GENERALIZATION_SMALL - * - * @param generalization - * @return */ public Builder generalization(int generalization) { this.generalization = generalization; return this; } - } - public float getStrokeWidth() { - return strokeWidth; - } + public Builder cap(Paint.Cap cap) { + this.cap = cap; + return this; + } - public int getStrokeColor() { - return strokeColor; - } + public Builder fixed(boolean b) { + this.fixed = b; + return this; + } - public int getFillColor() { - return fillColor; - } + public Builder stipple(int width) { + this.stipple = width; + return this; + } - public float getFillAlpha() { - return fillAlpha; - } + public Builder stippleColor(int color) { + this.stippleColor = color; + return this; + } - public int getGeneralization() { - return generalization; - } + public Builder stippleColor(String color) { + this.stippleColor = parseColor(color); + return this; + } - public double getBuffer() { - return buffer; - } + public Builder stippleWidth(float width) { + this.stippleWidth = width; + return this; + } - public int getScalingZoomLevel() { - return scalingZoomLevel; + public Builder texture(TextureItem texture) { + this.texture = texture; + return this; + } } static final Style DEFAULT_STYLE = new Builder() @@ -194,5 +235,4 @@ public class Style { public static Style.Builder builder() { return new Style.Builder(); } - } diff --git a/vtm-playground/src/org/oscim/test/LineTexTest.java b/vtm-playground/src/org/oscim/test/LineTexTest.java index 15baae5e..be1e341a 100644 --- a/vtm-playground/src/org/oscim/test/LineTexTest.java +++ b/vtm-playground/src/org/oscim/test/LineTexTest.java @@ -20,23 +20,28 @@ package org.oscim.test; import org.oscim.backend.CanvasAdapter; import org.oscim.backend.canvas.Color; import org.oscim.core.GeoPoint; -import org.oscim.gdx.GdxMap; +import org.oscim.core.MapPosition; +import org.oscim.event.Event; import org.oscim.gdx.GdxMapApp; -import org.oscim.layers.PathLayer; import org.oscim.layers.tile.bitmap.BitmapTileLayer; +import org.oscim.layers.vector.PathLayer; +import org.oscim.layers.vector.geometries.Style; +import org.oscim.map.Map; import org.oscim.renderer.bucket.TextureItem; -import org.oscim.theme.styles.LineStyle; import org.oscim.tiling.source.bitmap.DefaultSources; import java.util.ArrayList; import java.util.List; -public class LineTexTest extends GdxMap { +public class LineTexTest extends GdxMapApp { - TextureItem tex; + private static final boolean ANIMATION = false; + + private List mPathLayers = new ArrayList<>(); + private TextureItem tex; @Override - protected void createLayers() { + public void createLayers() { BitmapTileLayer bitmapLayer = new BitmapTileLayer(mMap, DefaultSources.STAMEN_TONER.build()); bitmapLayer.tileRenderer().setBitmapAlpha(0.5f); mMap.setBaseMap(bitmapLayer); @@ -46,40 +51,22 @@ public class LineTexTest extends GdxMap { tex = new TextureItem(CanvasAdapter.getBitmapAsset("", "patterns/pike.png")); tex.mipmap = true; - // LineStyle style = LineStyle.builder() - // .stippleColor(Color.BLACK) - // .stipple(64) - // .stippleWidth(1) - // .strokeWidth(8) - // .strokeColor(Color.RED) - // .fixed(true) - // .texture(tex) - // .build(); - - //PathLayer pl = new PathLayer(mMap, style); - //PathLayer pl = new PathLayer(mMap, Color.RED); - - //pl.addGreatCircle(new GeoPoint(53.1, -85.), new GeoPoint(-40.0, 85.0)); - - //mMap.layers().add(pl); - createLayers(1, true); - /*mMap.events.bind(new Map.UpdateListener() { - @Override - public void onMapEvent(Event e, MapPosition mapPosition) { - //if (e == Map.UPDATE_EVENT) { - long t = System.currentTimeMillis(); - float pos = t % 20000 / 10000f - 1f; - createLayers(pos, false); - mMap.updateMap(true); - //} - } - });*/ + if (ANIMATION) + mMap.events.bind(new Map.UpdateListener() { + @Override + public void onMapEvent(Event e, MapPosition mapPosition) { + //if (e == Map.UPDATE_EVENT) { + long t = System.currentTimeMillis(); + float pos = t % 20000 / 10000f - 1f; + createLayers(pos, false); + mMap.updateMap(true); + //} + } + }); } - ArrayList mPathLayers = new ArrayList<>(); - void createLayers(float pos, boolean init) { int i = 0; @@ -89,11 +76,12 @@ public class LineTexTest extends GdxMap { for (double lon = -180; lon <= 180; lon += 2) { //pts.add(new GeoPoint(lat, lon)); - double longitude = lon + (pos * 180); - if (longitude < -180) - longitude += 360; - if (longitude > 180) - longitude -= 360; + // double longitude = lon + (pos * 180); + // if (longitude < -180) + // longitude += 360; + // if (longitude > 180) + // longitude -= 360; + double longitude = lon; double latitude = lat + (pos * 90); if (latitude < -90) @@ -107,9 +95,8 @@ public class LineTexTest extends GdxMap { } PathLayer pathLayer; if (init) { - int c = Color.fade(Color.rainbow((float) (lat + 90) / 180), 0.9f); - - LineStyle style = LineStyle.builder() + int c = Color.fade(Color.rainbow((float) (lat + 90) / 180), 0.5f); + Style style = Style.builder() .stippleColor(c) .stipple(24) .stippleWidth(1) @@ -118,9 +105,7 @@ public class LineTexTest extends GdxMap { .fixed(true) .texture(tex) .build(); - pathLayer = new PathLayer(mMap, style); - mMap.layers().add(pathLayer); mPathLayers.add(pathLayer); } else { @@ -132,71 +117,8 @@ public class LineTexTest extends GdxMap { } - // mMap.layers().add(new GenericLayer(mMap, new BucketRenderer() { - // boolean init; - // - // GeometryBuffer g = new GeometryBuffer(10, 1); - // - // LineBucket lb = buckets.addLineBucket(0, - // new LineStyle(Color.fade(Color.CYAN, 0.5f), 2.5f)); - // - // LineTexBucket ll; - // - // @Override - // public boolean setup() { - // - // //lb.next = ll; - // ll = buckets.getLineTexBucket(1); - // - // TextureItem tex = new TextureItem(CanvasAdapter.getBitmapAsset("patterns/dot.png")); - // tex.mipmap = true; - // - // ll.line = LineStyle.builder() - // .stippleColor(Color.BLACK) - // .stipple(16) - // .stippleWidth(1) - // .strokeWidth(8) - // .strokeColor(Color.RED) - // .fixed(true) - // .texture(tex) - // .build(); - // - // //ll.width = 8; - // - // return super.setup(); - // } - // - // @Override - // public void update(GLViewport v) { - // if (!init) { - // mMapPosition.copy(v.pos); - // init = true; - // } - // - // buckets.clear(); - // buckets.set(lb); - //GeometryBuffer.makeCircle(g, 0, 0, 600, 40); - // - // // g.clear(); - // // g.startLine(); - // // g.addPoint(-1, 0); - // // g.addPoint(1, 0); - // // g.addPoint(1, -1); - // // g.addPoint(-1, -1); - // // g.scale(100, 100); - // - // for (int i = 0; i < 15; i++) { - // lb.addLine(g); - // ll.addLine(g); - // g.scale(0.8f, 0.8f); - // } - // compile(); - // - // } - // })); - public static void main(String[] args) { GdxMapApp.init(); - GdxMapApp.run(new LineTexTest(), null, 256); + GdxMapApp.run(new LineTexTest(), null, 400); } } diff --git a/vtm-playground/src/org/oscim/test/VectorLayerTest.java b/vtm-playground/src/org/oscim/test/VectorLayerTest.java index 1e8ee251..e5c1a775 100644 --- a/vtm-playground/src/org/oscim/test/VectorLayerTest.java +++ b/vtm-playground/src/org/oscim/test/VectorLayerTest.java @@ -19,19 +19,22 @@ package org.oscim.test; import org.oscim.backend.canvas.Color; import org.oscim.gdx.GdxMapApp; import org.oscim.layers.TileGridLayer; +import org.oscim.layers.tile.bitmap.BitmapTileLayer; import org.oscim.layers.vector.VectorLayer; import org.oscim.layers.vector.geometries.PointDrawable; import org.oscim.layers.vector.geometries.Style; -import org.oscim.theme.VtmThemes; -import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; +import org.oscim.tiling.source.bitmap.DefaultSources; import org.oscim.utils.ColorUtil; public class VectorLayerTest extends GdxMapApp { @Override public void createLayers() { - mMap.setBaseMap(new OSciMap4TileSource()); - mMap.setTheme(VtmThemes.DEFAULT); + BitmapTileLayer bitmapLayer = new BitmapTileLayer(mMap, DefaultSources.STAMEN_TONER.build()); + bitmapLayer.tileRenderer().setBitmapAlpha(0.5f); + mMap.setBaseMap(bitmapLayer); + + mMap.setMapPosition(0, 0, 1 << 2); VectorLayer vectorLayer = new VectorLayer(mMap); @@ -53,7 +56,7 @@ public class VectorLayerTest extends GdxMapApp { Style.Builder sb = Style.builder() .buffer(0.4) .fillColor(Color.RED) - .fillAlpha(0.2); + .fillAlpha(0.2f); // int tileSize = 5; // for (int x = -180; x < 200; x += tileSize) { @@ -72,7 +75,7 @@ public class VectorLayerTest extends GdxMapApp { Style style = sb.buffer(Math.random() * 1) .fillColor(ColorUtil.setHue(Color.RED, Math.random())) - .fillAlpha(0.5) + .fillAlpha(0.5f) .build(); vectorLayer.add(new PointDrawable(Math.random() * 180 - 90, @@ -80,11 +83,10 @@ public class VectorLayerTest extends GdxMapApp { style)); } + vectorLayer.update(); mMap.layers().add(vectorLayer); mMap.layers().add(new TileGridLayer(mMap, 0xff222222, 1.2f, 1)); - - mMap.setMapPosition(0, 0, 1 << 2); } public static void main(String[] args) {