package com.boombuler.piraten.map.data;
import java.util.List;
import org.osmdroid.DefaultResourceProxyImpl;
import org.osmdroid.api.IMapView;
import org.osmdroid.util.BoundingBoxE6;
import org.osmdroid.views.MapView;
import org.osmdroid.views.MapView.Projection;
import org.osmdroid.views.overlay.ItemizedOverlay;
import org.osmdroid.views.safecanvas.ISafeCanvas;
import android.content.Intent;
import android.graphics.Point;
import com.boombuler.piraten.map.Constants;
import com.boombuler.piraten.map.PirateMap;
import com.boombuler.piraten.map.PlakatDetailsActivity;
public class PlakatOverlay extends ItemizedOverlay<PlakatOverlayItem> {
private List<PlakatOverlayItem> mItems;
private final PirateMap mContext;
private Point mCurScreenCoords = new Point();
public PlakatOverlay(PirateMap context, List<PlakatOverlayItem> items) {
super(PlakatOverlayItem.getDefaultDrawable(), new DefaultResourceProxyImpl(context));
mContext = context;
if (items != null) {
mItems = items;
populate();
}
}
@Override
protected void drawSafe(ISafeCanvas canvas, MapView mapView, boolean shadow) {
if (shadow) {
return;
}
final Projection pj = mapView.getProjection();
final int size = this.size() - 1;
final BoundingBoxE6 bBox = mapView.getProjection().getBoundingBox().increaseByScale(1.2f);
/* Draw in backward cycle, so the items with the least index are on the front. */
for (int i = size; i >= 0; i--) {
final PlakatOverlayItem item = getItem(i);
pj.toMapPixels(item.getPoint(), mCurScreenCoords);
if (bBox.contains(item.getPoint())) {
onDrawItem(canvas, item, mCurScreenCoords, 0.0f);
}
}
}
@Override
protected PlakatOverlayItem createItem(int i) {
return mItems.get(i);
}
@Override
public int size() {
return mItems.size();
}
@Override
protected boolean onTap(int index) {
PlakatOverlayItem item = mItems.get(index);
mContext.startActivityForResult(
new Intent(mContext, PlakatDetailsActivity.class)
.putExtra(PlakatDetailsActivity.EXTRA_PLAKAT_ID, item.getId()),
Constants.REQ_DETAILS);
return true;
}
/*
public static void Prepare(Drawable[] mIcons) {
for(int i = 0; i < mIcons.length; i++)
mIcons[i] = PlakatOverlay. boundCenter(mIcons[i]);
}
*/
@Override
public boolean onSnapToItem(int i, int i2, Point point, IMapView iMapView) {
return false;
}
}