package org.ohmage.feedback.visualization;
import java.util.ArrayList;
import org.ohmage.db.DbContract.Responses;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
public class MapViewItemizedOverlay extends BalloonItemizedOverlay<OverlayItem> {
private final ArrayList<MapOverlayItem> mOverlays = new ArrayList<MapOverlayItem>();
private final Context mContext;
public MapViewItemizedOverlay(Drawable defaultMarker, MapView mapView) {
super(boundCenterBottom(defaultMarker), mapView);
mContext = mapView.getContext();
}
public void addOverlay(MapOverlayItem overlay){
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
@Override
protected boolean onBalloonTap(int index){
MapOverlayItem item = mOverlays.get(index);
if(item.getResponseID() == null)
return false;
long id = Long.valueOf(item.getResponseID()).longValue();
Uri uri = Responses.buildResponseUri(id);
mContext.startActivity(new Intent(Intent.ACTION_VIEW, uri));
return true;
}
public int getMaxLatitude(){
int maxLatitude = Integer.MIN_VALUE;
for(int i=0; i < mOverlays.size() ;i++){
maxLatitude = Math.max(mOverlays.get(i).getPoint().getLatitudeE6(), maxLatitude);
}
return maxLatitude;
}
public int getMinLatitude(){
int minLatitude = Integer.MAX_VALUE;
for(int i=0; i < mOverlays.size() ;i++){
minLatitude = Math.min(mOverlays.get(i).getPoint().getLatitudeE6(), minLatitude);
}
return minLatitude;
}
public int getMaxLongitude(){
int maxLongitude = Integer.MIN_VALUE;
for(int i=0; i < mOverlays.size() ;i++){
maxLongitude = Math.max(mOverlays.get(i).getPoint().getLongitudeE6(), maxLongitude);
}
return maxLongitude;
}
public int getMinLongitude(){
int minLongitude = Integer.MAX_VALUE;
for(int i=0; i < mOverlays.size() ;i++){
minLongitude = Math.min(mOverlays.get(i).getPoint().getLongitudeE6(), minLongitude);
}
return minLongitude; }
}