public List<E> getHitMarkers(float checkX, float checkY) { List<E> hitMarkers = new ArrayList<E>(); for (E marker : markers) { if (marker.isInside(map, checkX, checkY)) { hitMarkers.add(marker); } } return hitMarkers; }
public E getNearestMarker(float checkX, float checkY) { E foundMarker = null; double minDist = Double.MAX_VALUE; for (E marker : markers) { double dist = marker.getDistanceTo(map.getLocation(checkX, checkY)); if (minDist == dist) { if (marker.isInside(map, checkX, checkY)) { foundMarker = marker; } } else if (minDist > dist) { minDist = dist; foundMarker = marker; } } return foundMarker; }
public E getFirstHitMarker(float checkX, float checkY) { E foundMarker = null; // NB: Markers should be ordered, e.g. by size ascending, i.e. big, medium, small for (E marker : markers) { // NB: If markers are order by size descending, i.e. small, medium, big // for (int i = markers.size() - 1; i >= 0; i--) { // Marker marker = markers.get(i); if (marker.isInside(map, checkX, checkY)) { foundMarker = marker; break; } } return foundMarker; }