More mutable itemized layer

This commit is contained in:
Emux
2020-04-27 21:22:27 +03:00
parent 4604f07042
commit 2d64186a1a
15 changed files with 147 additions and 144 deletions

View File

@@ -23,6 +23,7 @@ import org.oscim.backend.canvas.Paint;
import org.oscim.core.GeoPoint;
import org.oscim.gdx.GdxMapApp;
import org.oscim.layers.marker.ItemizedLayer;
import org.oscim.layers.marker.MarkerInterface;
import org.oscim.layers.marker.MarkerItem;
import org.oscim.layers.marker.MarkerSymbol;
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
@@ -66,7 +67,7 @@ public class AtlasMultiTextureTest extends MarkerLayerTest {
paint.setTextSize(12);
paint.setStrokeWidth(2);
paint.setColor(Color.BLACK);
List<MarkerItem> pts = new ArrayList<>();
List<MarkerInterface> pts = new ArrayList<>();
for (double lat = -90; lat <= 90; lat += 5) {
for (double lon = -180; lon <= 180; lon += 5) {
String title = lat + "/" + lon;
@@ -86,29 +87,32 @@ public class AtlasMultiTextureTest extends MarkerLayerTest {
// With iOS we must flip the Y-Axis
TextureAtlasUtils.createTextureRegions(inputMap, regionsMap, atlasList, true, false);
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), (MarkerSymbol) null, this);
mMarkerLayer = new ItemizedLayer(mMap, new ArrayList<MarkerInterface>(), (MarkerSymbol) null, this);
mMap.layers().add(mMarkerLayer);
mMarkerLayer.addItems(pts);
// set all markers
for (MarkerItem item : pts) {
MarkerSymbol markerSymbol = new MarkerSymbol(regionsMap.get(item.getTitle()), HotspotPlace.BOTTOM_CENTER);
item.setMarker(markerSymbol);
for (MarkerInterface item : pts) {
MarkerItem markerItem = (MarkerItem) item;
MarkerSymbol markerSymbol = new MarkerSymbol(regionsMap.get(markerItem.getTitle()), HotspotPlace.BOTTOM_CENTER);
markerItem.setMarker(markerSymbol);
}
System.out.println("Atlas count: " + atlasList.size());
}
@Override
public boolean onItemSingleTapUp(int index, MarkerItem item) {
System.out.println("Marker tap " + item.getTitle());
public boolean onItemSingleTapUp(int index, MarkerInterface item) {
MarkerItem markerItem = (MarkerItem) item;
System.out.println("Marker tap " + markerItem.getTitle());
return true;
}
@Override
public boolean onItemLongPress(int index, MarkerItem item) {
System.out.println("Marker long press " + item.getTitle());
public boolean onItemLongPress(int index, MarkerInterface item) {
MarkerItem markerItem = (MarkerItem) item;
System.out.println("Marker long press " + markerItem.getTitle());
return true;
}

View File

@@ -69,15 +69,15 @@ public class ClusterMarkerLayerTest extends MarkerLayerTest {
};
}
};
mMarkerLayer = new ItemizedLayer<>(
mMarkerLayer = new ItemizedLayer(
mMap,
new ArrayList<MarkerItem>(),
new ArrayList<MarkerInterface>(),
markerRendererFactory,
this);
mMap.layers().add(mMarkerLayer);
// Create some markers spaced STEP degrees
List<MarkerItem> pts = new ArrayList<>();
List<MarkerInterface> pts = new ArrayList<>();
GeoPoint center = mMap.getMapPosition().getGeoPoint();
for (int x = -COUNT; x < COUNT; x++) {
for (int y = -COUNT; y < COUNT; y++) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2016-2018 devemux86
* Copyright 2016-2020 devemux86
* Copyright 2019 telemaxx
*
* This program is free software: you can redistribute it and/or modify it under the
@@ -25,6 +25,7 @@ import org.oscim.event.MotionEvent;
import org.oscim.gdx.GdxMapApp;
import org.oscim.layers.Layer;
import org.oscim.layers.marker.ItemizedLayer;
import org.oscim.layers.marker.MarkerInterface;
import org.oscim.layers.marker.MarkerItem;
import org.oscim.layers.marker.MarkerSymbol;
import org.oscim.layers.tile.vector.VectorTileLayer;
@@ -41,7 +42,7 @@ import java.util.List;
import static org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
public class MarkerLayerLabelsTest extends GdxMapApp implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
public class MarkerLayerLabelsTest extends GdxMapApp implements ItemizedLayer.OnItemGestureListener<MarkerInterface> {
private static final int FG_COLOR = 0xFF000000; // 100 percent black. AARRGGBB
private static final int BG_COLOR = 0x80FF69B4; // 50 percent pink. AARRGGBB
@@ -87,11 +88,11 @@ public class MarkerLayerLabelsTest extends GdxMapApp implements ItemizedLayer.On
//Bitmap bitmapPoi = CanvasAdapter.decodeBitmap(getClass().getResourceAsStream("/res/marker_poi2.png"));
MarkerSymbol symbol = new MarkerSymbol(bitmapPoi, HotspotPlace.CENTER, false);
ItemizedLayer<MarkerItem> markerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), symbol, this);
ItemizedLayer markerLayer = new ItemizedLayer(mMap, new ArrayList<MarkerInterface>(), symbol, this);
mMap.layers().add(markerLayer);
// creating some poi's
List<MarkerItem> pts = new ArrayList<>();
List<MarkerInterface> pts = new ArrayList<>();
pts.add(new MarkerItem("Brandenburger Tor", "#1789-1793", new GeoPoint(52.516275, 13.377704)));
pts.add(new MarkerItem("Siegessaeule, hidden description", "this is a hidden Description without a #", new GeoPoint(52.514543, 13.350119)));
pts.add(new MarkerItem("Gleisdreieck, without description", "", new GeoPoint(52.499562, 13.374063)));
@@ -101,9 +102,10 @@ public class MarkerLayerLabelsTest extends GdxMapApp implements ItemizedLayer.On
+ "is drawn on the map\n"
+ "the rest is surpressed", new GeoPoint(52.509352, 13.375739)));
for (MarkerItem mi : pts) {
System.out.println("title: " + mi.title);
mi.setMarker(createAdvancedSymbol(mi, bitmapPoi));
for (MarkerInterface mi : pts) {
MarkerItem markerItem = (MarkerItem) mi;
System.out.println("title: " + markerItem.title);
markerItem.setMarker(createAdvancedSymbol(markerItem, bitmapPoi));
}
markerLayer.addItems(pts);
@@ -198,14 +200,16 @@ public class MarkerLayerLabelsTest extends GdxMapApp implements ItemizedLayer.On
}
@Override
public boolean onItemSingleTapUp(int index, MarkerItem item) {
System.out.println("Marker tap " + item.getTitle());
public boolean onItemSingleTapUp(int index, MarkerInterface item) {
MarkerItem markerItem = (MarkerItem) item;
System.out.println("Marker tap " + markerItem.getTitle());
return true;
}
@Override
public boolean onItemLongPress(int index, MarkerItem item) {
System.out.println("Marker long press " + item.getTitle());
public boolean onItemLongPress(int index, MarkerInterface item) {
MarkerItem markerItem = (MarkerItem) item;
System.out.println("Marker long press " + markerItem.getTitle());
return true;
}

View File

@@ -23,6 +23,7 @@ import org.oscim.event.MotionEvent;
import org.oscim.gdx.GdxMapApp;
import org.oscim.layers.Layer;
import org.oscim.layers.marker.ItemizedLayer;
import org.oscim.layers.marker.MarkerInterface;
import org.oscim.layers.marker.MarkerItem;
import org.oscim.layers.marker.MarkerSymbol;
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
@@ -38,11 +39,11 @@ import java.util.List;
import static org.oscim.layers.marker.MarkerSymbol.HotspotPlace;
public class MarkerLayerTest extends GdxMapApp implements ItemizedLayer.OnItemGestureListener<MarkerItem> {
public class MarkerLayerTest extends GdxMapApp implements ItemizedLayer.OnItemGestureListener<MarkerInterface> {
static final boolean BILLBOARDS = true;
MarkerSymbol mFocusMarker;
ItemizedLayer<MarkerItem> mMarkerLayer;
ItemizedLayer mMarkerLayer;
@Override
public void createLayers() {
@@ -71,10 +72,10 @@ public class MarkerLayerTest extends GdxMapApp implements ItemizedLayer.OnItemGe
else
mFocusMarker = new MarkerSymbol(bitmapFocus, HotspotPlace.CENTER, false);
mMarkerLayer = new ItemizedLayer<>(mMap, new ArrayList<MarkerItem>(), symbol, this);
mMarkerLayer = new ItemizedLayer(mMap, new ArrayList<MarkerInterface>(), symbol, this);
mMap.layers().add(mMarkerLayer);
List<MarkerItem> pts = new ArrayList<>();
List<MarkerInterface> pts = new ArrayList<>();
for (double lat = -90; lat <= 90; lat += 5) {
for (double lon = -180; lon <= 180; lon += 5)
pts.add(new MarkerItem(lat + "/" + lon, "", new GeoPoint(lat, lon)));
@@ -86,24 +87,26 @@ public class MarkerLayerTest extends GdxMapApp implements ItemizedLayer.OnItemGe
}
@Override
public boolean onItemSingleTapUp(int index, MarkerItem item) {
if (item.getMarker() == null)
item.setMarker(mFocusMarker);
public boolean onItemSingleTapUp(int index, MarkerInterface item) {
MarkerItem markerItem = (MarkerItem) item;
if (markerItem.getMarker() == null)
markerItem.setMarker(mFocusMarker);
else
item.setMarker(null);
markerItem.setMarker(null);
System.out.println("Marker tap " + item.getTitle());
System.out.println("Marker tap " + markerItem.getTitle());
return true;
}
@Override
public boolean onItemLongPress(int index, MarkerItem item) {
if (item.getMarker() == null)
item.setMarker(mFocusMarker);
public boolean onItemLongPress(int index, MarkerInterface item) {
MarkerItem markerItem = (MarkerItem) item;
if (markerItem.getMarker() == null)
markerItem.setMarker(mFocusMarker);
else
item.setMarker(null);
markerItem.setMarker(null);
System.out.println("Marker long press " + item.getTitle());
System.out.println("Marker long press " + markerItem.getTitle());
return true;
}