package com.bocai.map;
import android.graphics.*;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.LayerDrawable;
import com.bocai.R;
import com.google.android.maps.*;
import java.util.LinkedList;
public class ClusterOverlayItem extends OverlayItem
{
public ClusterOverlayItem(GeoPoint geopoint, String s, String s1)
{
super(geopoint, s, s1);
items = null;
selectedIndex = 0;
bounds = null;
tmpPoint = new Point();
SightingOverlayItem.ImageListener imagelistener = new SightingOverlayItem.ImageListener() {
public void onImageDownloaded(SightingOverlayItem sightingoverlayitem, Bitmap bitmap)
{
Object obj = items.get(selectedIndex);
if(sightingoverlayitem != obj)
return;
updateMarker();
if(ClusterOverlayItem.map == null)
{
return;
} else
{
int j = thumbnailSize / 2;
MapView mapview = ClusterOverlayItem.map;
int k = bounds.left - j;
int l = bounds.top - j;
int i1 = bounds.right + j;
int j1 = bounds.bottom + j;
mapview.postInvalidate(k, l, i1, j1);
return;
}
}
};
sightingImageListener = imagelistener;
}
public ClusterOverlayItem(OverlayItem overlayitem)
{
super(overlayitem.getPoint(), overlayitem.getTitle(), overlayitem.getSnippet());
GeoPoint geopoint = overlayitem.getPoint();
String s = overlayitem.getTitle();
String s1 = overlayitem.getSnippet();
items = null;
selectedIndex = 0;
bounds = null;
tmpPoint = new Point();
;
sightingImageListener = new SightingOverlayItem.ImageListener() {
public void onImageDownloaded(SightingOverlayItem sightingoverlayitem, Bitmap bitmap)
{
Object obj = items.get(selectedIndex);
if(sightingoverlayitem != obj)
return;
updateMarker();
if(ClusterOverlayItem.map == null)
{
return;
} else
{
int j = thumbnailSize / 2;
MapView mapview = ClusterOverlayItem.map;
int k = bounds.left - j;
int l = bounds.top - j;
int i1 = bounds.right + j;
int j1 = bounds.bottom + j;
mapview.postInvalidate(k, l, i1, j1);
return;
}
}
}
;
items = new LinkedList();
items.add(overlayitem);
Point point2 = projection.toPixels(overlayitem.getPoint(), tmpPoint);
int i = tmpPoint.x;
int j = threshold;
int k = i - j;
int l = tmpPoint.y;
int i1 = threshold;
int j1 = l - i1;
int k1 = tmpPoint.x;
int l1 = threshold;
int i2 = k1 + l1;
int j2 = tmpPoint.y;
int k2 = threshold;
int l2 = j2 + k2;
Rect rect = new Rect(k, j1, i2, l2);
bounds = rect;
}
public void addItem(OverlayItem overlayitem)
{
if(items == null)
{
items = new LinkedList();
projection.toPixels(overlayitem.getPoint(), tmpPoint);
int i = tmpPoint.x;
int j = threshold;
int k = i - j;
int l = tmpPoint.y;
int i1 = threshold;
int j1 = l - i1;
int k1 = tmpPoint.x;
int l1 = threshold;
int i2 = k1 + l1;
int j2 = tmpPoint.y;
int k2 = threshold;
int l2 = j2 + k2;
Rect rect = new Rect(k, j1, i2, l2);
bounds = rect;
}
items.add(overlayitem);
}
public OverlayItem getItem(int i)
{
if (items == null) {
return null;
} else {
int j = items.size();
if(i < j) {
OverlayItem overlayitem = (OverlayItem)items.get(i);
return overlayitem;
} else {
return null;
}
}
}
public OverlayItem getSelectedItem()
{
OverlayItem overlayitem;
if(items == null)
{
overlayitem = null;
} else
{
overlayitem = (OverlayItem)items.get(selectedIndex);
}
return overlayitem;
}
public boolean isItemInBounds(OverlayItem overlayitem)
{
projection.toPixels(overlayitem.getPoint(), tmpPoint);
return bounds.contains(tmpPoint.x, tmpPoint.y);
}
public boolean onTap()
{
int i = items.size();
if(i > 0)
{
selectedIndex = selectedIndex + 1;
if(selectedIndex >= i)
selectedIndex = 0;
updateMarker();
}
return false;
}
public void setThumbnailSize(int i)
{
thumbnailSize = i;
}
public String toString()
{
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append("ClusterOverlayItem { bounds: ");
String s = bounds.toShortString();
stringbuilder.append(s).append(", items: ");
stringbuilder.append(items).append("}");
return stringbuilder.toString();
}
public void updateMarker()
{
android.graphics.drawable.Drawable drawable = getMarker(0);
if(!(drawable instanceof LayerDrawable))
return;
SightingOverlayItem sightingoverlayitem = (SightingOverlayItem)items.get(selectedIndex);
Bitmap bitmap = sightingoverlayitem.getBitmap();
if(bitmap == null)
{
sightingoverlayitem.listener = sightingImageListener;
return;
}
LayerDrawable layerdrawable = (LayerDrawable)drawable;
BitmapDrawable bitmapdrawable = new BitmapDrawable(bitmap);
bitmapdrawable.setAntiAlias(true);
bitmapdrawable.setFilterBitmap(true);
if(thumbnailSize <= 0)
{
return;
} else
{
int j = thumbnailSize / 2;
int k = -j;
int l = -j;
bitmapdrawable.setBounds(k, l, j, j);
layerdrawable.setDrawableByLayerId(R.id.thumb, bitmapdrawable);
return;
}
}
private static final String LOG_TAG = "ClusterOverlayItem";
public static MapView map = null;
public static Projection projection = null;
public static int threshold = 8;
public Rect bounds;
public LinkedList items;
public int selectedIndex;
SightingOverlayItem.ImageListener sightingImageListener;
public int thumbnailSize;
private Point tmpPoint;
}