안드로이드 개발 질문/답변
(글 수 45,052)
public class LOCATION_ITEM_DRAW extends ItemizedOverlay<OverlayItem>{
private ArrayList<OverlayItem> LIST_INFO = new ArrayList<OverlayItem>();
Drawable maker;
int[] bitmap_id = {R.drawable.e1,R.drawable.e2,R.drawable.e3,R.drawable.e4,R.drawable.e5,R.drawable.e6,R.drawable.e7,R.drawable.e8,R.drawable.e9,R.drawable.e10,R.drawable.e11};
Drawable e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11;
Drawable earr[] = {e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11};
/** 줌 레벨 저장용 */
int zoomlevel = 0 ;
OverlayItem OVI ;
public LOCATION_ITEM_DRAW(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
this.maker = defaultMarker;
resetdraw();
}
private void resetdraw(){
Drawable makerset = null;
zoomlevel = mapView.getZoomLevel();
Log.w("-->","zoomlevel = "+zoomlevel);
// 아이콘 크기 설정
Bitmap bitmap_temp;
for(int i =0 ; i < bitmap_id.length; i++){
bitmap_temp = BitmapFactory.decodeResource(mcontext.getResources(), bitmap_id[i]);
bitmap_temp = Bitmap.createScaledBitmap(bitmap_temp, (zoomlevel*3)+10, (zoomlevel*3)+10, true);
earr[i] = new BitmapDrawable(bitmap_temp);
}
/*Drawable aa = new BitmapDrawable*/
LIST_INFO.clear();
int LIST_SIZE = LIST_INFO_TABLE.size();
GeoPoint TEMP_GEO = null;
int cateint = 0;
if(LIST_SIZE !=0 ){
for(int i = 0 ; i< LIST_SIZE ; i++){
TEMP_GEO = new GeoPoint((int) (LIST_INFO_TABLE.get(i).INFO_XPOS * 1E6), (int) (LIST_INFO_TABLE.get(i).INFO_YPOS * 1E6));
cateint = LIST_INFO_TABLE.get(i).INFO_CATEGORY;
OVI = new OverlayItem(TEMP_GEO, LIST_INFO_TABLE.get(i).INFO_NAME, LIST_INFO_TABLE.get(i).INFO_NAME);
switch (cateint) {
case 1:
makerset = earr[1];
break;
case 2:
makerset = earr[2];
break;
case 3:
makerset = earr[3];
break;
case 4:
makerset = earr[4];
break;
case 5:
makerset = earr[5];
break;
case 6:
makerset = earr[6];
break;
case 7:
makerset = earr[7];
break;
case 8:
makerset = earr[8];
break;
case 9:
makerset = earr[9];
break;
case 10:
makerset = earr[10];
break;
case 11:
makerset = earr[11];
break;
default:
makerset = earr[1];
break;
}
OVI.setMarker(boundCenterBottom(makerset));
LIST_INFO.add(OVI);
}
}else{
Log.w("-->", "LIST_ITEM_TABLE = NULL");
}
populate();
}
//마커의 그림자를 셋팅함.
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
boundCenterBottom(maker);
/*if(zoomlevel != mapView.getZoomLevel()){
zoomlevel = mapView.getZoomLevel();
Log.w("-->", "RESET_DRAW");
resetdraw();
}*/
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return LIST_INFO.get(i);
}
@Override
public int size() {
return LIST_INFO.size();
}
@Override
protected boolean onTap(int index) {
Toast.makeText(map_view_main.this, LIST_INFO.get(index).getTitle(), Toast.LENGTH_SHORT).show();
OverlayItem OVI = LIST_INFO.get(index);
if(point != null){
Mailes_length = LOCATION_TO_LOCATION_LENGTH(point,OVI.getPoint());
}
mapControl.animateTo(OVI.getPoint());
return super.onTap(index);
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_UP){
if(zoomlevel != mapView.getZoomLevel()){
zoomlevel = mapView.getZoomLevel();
Log.w("-->","ZOOM_LEVEL_CHANGE=");
resetdraw();
}
}
return super.onTouchEvent(event, mapView);
}
}
이렇게 했는데 문제는 터치할때는 잘되는데요
기본으로 주는 setBuiltInZoomControls 이걸로 줌인/아웃을 하면 안되네요 (당연하지만 ㅠ_ㅠ)
이경우에는 줌인 줌 아웃 버튼을 만들어서 구현해야 할까요 ?
아니면 다른 방법이 있나요 ?



