package busradar.madison; import java.util.ArrayList; 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 StopOverlay extends /*ItemizedOverlay<BusStop>*/ItemizedOverlay<OverlayItem> implements Snappable{ private ArrayList<BusStop> mOverlays = new ArrayList<BusStop>(); private BusRadar mContext; public StopOverlay(Stop[] stops, BusRadar context) { super(boundCenter(context.getResources().getDrawable(R.drawable.bus_nodir))); mContext = context; Drawable n = context.getResources().getDrawable(R.drawable.bus_north); Drawable e = context.getResources().getDrawable(R.drawable.bus_east); Drawable s = context.getResources().getDrawable(R.drawable.bus_south); Drawable w = context.getResources().getDrawable(R.drawable.bus_west); Drawable b = context.getResources().getDrawable(R.drawable.bus_nodir); BusStop stop; for(int i = 0; i < stops.length; i++) { stop = new BusStop(stops[i]); switch (stops[i].dir) { case Stop.NORTH: stop.setMarker(boundCenter(n)); break; case Stop.EAST: stop.setMarker(boundCenter(e)); break; case Stop.SOUTH: stop.setMarker(boundCenter(s)); break; case Stop.WEST: stop.setMarker(boundCenter(w)); break; default: stop.setMarker(boundCenter(b)); } mOverlays.add(stop); System.out.printf("added overlay\n"); } populate(); } @Override protected OverlayItem createItem(int i) { //BusStop b = mOverlays.get(i); // OverlayItem o = b; //o = new OverlayItem(new GeoPoint( (int)b.myStop().latitude(), (int)b.myStop().longitude() ), String.valueOf(b.myStop().id()), b.myStop().myName() ); //o.setMarker(b.getMarker(0)); //return b; //(OverlayItem) b; //double lat = 43.0693926; //double lon = -89.4024883; //OverlayItem o = new OverlayItem(new GeoPoint( (int)(lat*1E6), (int)(lon*1E6)), "XX", "YY"); //return o; return mOverlays.get(i); } @Override public int size() { //return 1; return mOverlays.size(); } @Override protected boolean onTap(int index) { BusStop item = (BusStop) mOverlays.get(index); ((BusRadar) mContext).setStop(item.myStop()); ((BusRadar) mContext).showDialog(0); 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; } }