package map.test; import java.util.ArrayList; import android.app.AlertDialog; import android.content.Context; import android.graphics.Point; import android.graphics.drawable.Drawable; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.MapView; import com.google.android.maps.OverlayItem; import com.google.android.maps.Overlay.Snappable; public class TestOverlay extends ItemizedOverlay<BusStop> implements Snappable{ private ArrayList<BusStop> mOverlays = new ArrayList<BusStop>(); private Context mContext; public TestOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } public void addOverlay(BusStop overlay) { mOverlays.add(overlay); populate(); } @Override protected BusStop createItem(int i) { return mOverlays.get(i); } @Override public int size() { return mOverlays.size(); } public TestOverlay(Drawable defaultMarker, Context context) { super(boundCenterBottom(defaultMarker)); mContext = context; } @Override protected boolean onTap(int index) { OverlayItem item = mOverlays.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; } public boolean onSnapToItem(int x, int y, Point snapPoint, MapView mapView) { if (Math.sqrt((x-snapPoint.x)*(x-snapPoint.x)+(y-snapPoint.y)*(y-snapPoint.y)) < 20) return true; return false; } }