cleanup: MarkerLayer, add simple ItemizedLayer constructor

This commit is contained in:
Hannes Janetzek 2014-02-10 02:00:09 +01:00
parent 1653e54541
commit e3b279ed6d
2 changed files with 19 additions and 14 deletions

View File

@ -21,6 +21,7 @@
*/ */
package org.oscim.layers.marker; package org.oscim.layers.marker;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.oscim.core.BoundingBox; import org.oscim.core.BoundingBox;
@ -41,17 +42,25 @@ public class ItemizedLayer<Item extends MarkerItem> extends MarkerLayer<Item>
protected OnItemGestureListener<Item> mOnItemGestureListener; protected OnItemGestureListener<Item> mOnItemGestureListener;
protected int mDrawnItemsLimit = Integer.MAX_VALUE; protected int mDrawnItemsLimit = Integer.MAX_VALUE;
public ItemizedLayer(Map map, MarkerSymbol defaulMarker) {
this(map, new ArrayList<Item>(), defaulMarker, null);
}
public ItemizedLayer(Map map, List<Item> list, public ItemizedLayer(Map map, List<Item> list,
MarkerSymbol defaultMarker, MarkerSymbol defaultMarker,
OnItemGestureListener<Item> onItemGestureListener) { OnItemGestureListener<Item> listener) {
super(map, defaultMarker); super(map, defaultMarker);
mItemList = list; mItemList = list;
mOnItemGestureListener = onItemGestureListener; mOnItemGestureListener = listener;
populate(); populate();
} }
public void setOnItemGestureListener(OnItemGestureListener<Item> listener) {
mOnItemGestureListener = listener;
}
@Override @Override
protected Item createItem(int index) { protected Item createItem(int index) {
return mItemList.get(index); return mItemList.get(index);

View File

@ -29,11 +29,6 @@ import org.oscim.renderer.elements.SymbolLayer;
import org.oscim.utils.TimSort; import org.oscim.utils.TimSort;
import org.oscim.utils.geom.GeometryUtils; import org.oscim.utils.geom.GeometryUtils;
//TODO
//- need to sort items back to front for rendering
//- and to make this work for multiple overlays
//a global scenegraph is probably required.
public class MarkerRenderer extends ElementRenderer { public class MarkerRenderer extends ElementRenderer {
protected final MarkerSymbol mDefaultMarker; protected final MarkerSymbol mDefaultMarker;
@ -41,21 +36,22 @@ public class MarkerRenderer extends ElementRenderer {
private final SymbolLayer mSymbolLayer; private final SymbolLayer mSymbolLayer;
private final float[] mBox = new float[8]; private final float[] mBox = new float[8];
private final MarkerLayer<MarkerItem> mMarkerLayer; private final MarkerLayer<MarkerItem> mMarkerLayer;
private final Point mMapPoint = new Point();
/** increase view to show items that are partially visible */ /** increase view to show items that are partially visible */
protected int mExtents = 100; protected int mExtents = 100;
/** flag to force update of markers */
private boolean mUpdate; private boolean mUpdate;
private InternalItem[] mItems; private InternalItem[] mItems;
private final Point mMapPoint = new Point();
static class InternalItem { static class InternalItem {
MarkerItem item; MarkerItem item;
boolean visible; boolean visible;
boolean changes; boolean changes;
float x, y; float x, y;
double px, py; double px, py;
float dy; float dy;
@Override @Override
@ -192,6 +188,10 @@ public class MarkerRenderer extends ElementRenderer {
} }
} }
public void update() {
mUpdate = true;
}
static TimSort<InternalItem> ZSORT = new TimSort<InternalItem>(); static TimSort<InternalItem> ZSORT = new TimSort<InternalItem>();
public static void sort(InternalItem[] a, int lo, int hi) { public static void sort(InternalItem[] a, int lo, int hi) {
@ -223,10 +223,6 @@ public class MarkerRenderer extends ElementRenderer {
} }
}; };
public void update() {
mUpdate = true;
}
// /** // /**
// * Returns the Item at the given index. // * Returns the Item at the given index.
// * // *