package com.spatialdev.osm.marker;
import android.content.Context;
import com.mapbox.mapboxsdk.overlay.ItemizedIconOverlay;
import com.mapbox.mapboxsdk.overlay.Marker;
import com.spatialdev.osm.model.OSMNode;
import com.spatialdev.osm.renderer.OSMOverlay;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* OSMItemizedIconOverlay is an extension of ItemizedIconOverlay.
* Instead of having an internal list of markers as we do in
* standard IconOverlays, we have a reference to the varying list
* of markers set from a QuadTree in OSMOverlay#draw.
*/
public class OSMItemizedIconOverlay extends ItemizedIconOverlay {
List<OSMNode> viewPortNodes;
public OSMItemizedIconOverlay(OSMOverlay osmOverlay, Context pContext, List<Marker> pList, OnItemGestureListener<Marker> pOnItemGestureListener) {
super(pContext, pList, pOnItemGestureListener);
viewPortNodes = osmOverlay.getViewPortNodes();
}
@Override
protected void populate() {
// no op
}
@Override
public Marker getItem(final int position) {
return viewPortNodes.get(position).getMarker();
}
@Override
public int size() {
return viewPortNodes.size();
}
/**
* Sorts List of Marker by Latitude
*/
protected void sortListByLatitude() {
Collections.sort(viewPortNodes, new Comparator<OSMNode>() {
public int compare(OSMNode a, OSMNode b) {
return Double.valueOf(a.getLat()).compareTo(b.getLat());
}
});
}
}