// Created by plusminus on 00:52:21 - 12.11.2008
package org.androad.sys.ors.views.overlay;
import java.util.ArrayList;
import java.util.List;
import junit.framework.Assert;
import org.osmdroid.views.MapView;
import org.osmdroid.views.MapView.Projection;
import org.osmdroid.views.overlay.Overlay;
import org.androad.sys.ors.adt.aoi.AreaOfInterest;
import android.content.Context;
import android.graphics.Canvas;
public class AreaOfInterestOverlay extends Overlay {
// ===========================================================
// Constants
// ===========================================================
// ===========================================================
// Fields
// ===========================================================
protected final List<AreaOfInterest> mAOIs;
protected int mDrawnAreasLimit = Integer.MAX_VALUE;
// ===========================================================
// Constructors
// ===========================================================
public AreaOfInterestOverlay(final Context ctx){
this(ctx, new ArrayList<AreaOfInterest>());
}
public AreaOfInterestOverlay(final Context ctx, final AreaOfInterest pAOI){
super(ctx);
this.mAOIs = new ArrayList<AreaOfInterest>();
this.mAOIs.add(pAOI);
}
public AreaOfInterestOverlay(final Context ctx, final ArrayList<AreaOfInterest> pAOIs){
super(ctx);
Assert.assertNotNull(pAOIs);
this.mAOIs = pAOIs;
}
// ===========================================================
// Getter & Setter
// ===========================================================
public List<AreaOfInterest> getAreasOfInterest(){
return this.mAOIs;
}
public int getDrawnAreasLimit() {
return this.mDrawnAreasLimit;
}
public void setDrawnAreasLimit(final int aLimit) {
this.mDrawnAreasLimit = aLimit;
}
// ===========================================================
// Methods from SuperClass/Interfaces
// ===========================================================
public void release() {
this.mAOIs.clear();
}
@Override
protected void draw(final Canvas c, final MapView osmv, final boolean shadow) {
final Projection pj = osmv.getProjection();
final int limit = Math.min(this.mDrawnAreasLimit, this.mAOIs.size());
for(int i = 0; i < limit; i++){
final AreaOfInterest a = this.mAOIs.get(i);
a.drawToCanvas(c, pj);
}
}
// ===========================================================
// Methods
// ===========================================================
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}