package com.nobrain.act;

import java.util.ArrayList;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.util.Log;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import com.google.android.maps.Projection;

public class test_overlayitemized extends ItemizedOverlay<OverlayItem> {
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    private Context mContext;
    private GeoPoint gPoint;
    private Bitmap picker;

    public test_overlayitemized(Drawable defaultMarker) {
        super(boundCenterBottom(defaultMarker));
        // TODO Auto-generated constructor stub
        picker = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.maker);
    }
    public test_overlayitemized(Drawable defaultMarker, Context mContext) {
        super(boundCenterBottom(defaultMarker));
        picker = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.maker);
        this.mContext = mContext;
    }

    @Override
    protected OverlayItem createItem(int arg0) {
        // TODO Auto-generated method stub
        return mOverlays.get(arg0);
    }
    
    @Override
    public int size() {
        // TODO Auto-generated method stub
        return mOverlays.size();
    }
    
    public void addOverlayItem(OverlayItem item){
        mOverlays.add(item);
        populate();
    }
    @Override
    public boolean onTap(GeoPoint p, MapView mapView) {
        // TODO Auto-generated method stub
        this.gPoint = p;
        Log.d("Parsing", "Lat : "+p.getLatitudeE6()+"\nLong : "+p.getLongitudeE6());
//        addOverlayItem(new OverlayItem(p, "", ""));        탭 아이콘 추가
        return super.onTap(p, mapView);
    }
    
    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        // TODO Auto-generated method stub
        super.draw(canvas, mapView, shadow);
        //    탭자리에 아이콘 출력
        if(!shadow && gPoint!=null){
            Projection projection = mapView.getProjection();
            Point point = new Point();
            projection.toPixels(gPoint, point);
            point.offset(picker.getWidth()/-1, picker.getHeight()*-1);
            canvas.drawBitmap(picker, point.x,point.y, null);
        }
    }
}


궁금한게 onTap 과 draw 메소드간에 어떠한 상관관계가 있어서
탭할때마다 새롭게 draw 를 하는건가요?