package org.commcare.dalvik.geo;
import org.javarosa.core.model.instance.TreeReference;
import android.content.Context;
import android.graphics.drawable.Drawable;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import com.readystatesoftware.mapviewballoons.BalloonItemizedOverlay;
/**
* @author ctsims
*
*/
public abstract class EntityOverlay extends BalloonItemizedOverlay {
private static int maxNum = 200;
private OverlayItem overlays[] = new OverlayItem[maxNum];
private TreeReference references[] = new TreeReference[maxNum];
private int index = 0;
private boolean full = false;
private Context context;
public EntityOverlay(Context context, Drawable defaultMarker, MapView view) {
super(boundCenterBottom(defaultMarker), view);
this.context = context;
}
/*
* (non-Javadoc)
* @see com.google.android.maps.ItemizedOverlay#createItem(int)
*/
@Override
protected OverlayItem createItem(int i) {
return overlays[i];
}
/*
* (non-Javadoc)
* @see com.google.android.maps.ItemizedOverlay#size()
*/
@Override
public int size() {
if (full) {
return overlays.length;
} else {
return index;
}
}
public void addOverlay(OverlayItem overlay, TreeReference reference) {
if (index < maxNum) {
overlays[index] = overlay;
} else {
index = 0;
full = true;
overlays[index] = overlay;
}
references[index] = reference;
index++;
populate();
}
/* (non-Javadoc)
* @see com.readystatesoftware.mapviewballoons.BalloonItemizedOverlay#onBalloonTap(int, com.google.android.maps.OverlayItem)
*/
@Override
protected boolean onBalloonTap(int index, OverlayItem item) {
selected(references[index]);
return true;
}
protected abstract void selected(TreeReference ref);
public static Drawable bcb(Drawable d) {
return EntityOverlay.boundCenterBottom(d);
}
}