private MapView _mapView;
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when){
super.draw(canvas, mapView, shadow);
mGestureDetector = new GestureDetector(this);
Point screenPoint = new Point();
// 현재 자신의 위치로 초기화
mapView.getProjection().toPixels(myPoint, screenPoint);
Bitmap bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.androidmarker);
canvas.drawBitmap(bmp, screenPoint.x, screenPoint.y, null);
return true;
}
//////////////////////////////////////////////////////////////////////////////////////
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
_mapView = mapView;
/* 맵뷰에서 받은 터치 이벤트를 제스쳐 리스너로 보냄
* -> 제스쳐 리스너에 implement 된 함수 실행
* */
mGestureDetector.onTouchEvent(event);
return false;
}
public boolean onDown(MotionEvent e) {
Log.i("bs","onDown Event");
// TODO Auto-generated method stub
return false;
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
return false;
}
public void onLongPress(MotionEvent e) {
Log.i("bs","onLongPress Event");
/*
Toast mToast = Toast.makeText(getApplicationContext(), "Long Press",
Toast.LENGTH_SHORT);
mToast.show();*/
GeoPoint p = _mapView.getProjection().fromPixels((int) e.getX(),
(int) e.getY());
//_mapView.getController().animateTo(p);
// 현재 p에 들어있는 위도 경도는 정수형이라서 1E6으로 나누어줌.
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," + p.getLongitudeE6() / 1E6,
Toast.LENGTH_SHORT).show();
}
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
// TODO Auto-generated method stub
return false;
}
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.i("bs","onShowPress Event");
}
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
제가 overlay를 상속한 클래스에 OnGestureListener를 implements 시켰습니다.
longPress시에 위도 경도를 Toast를 사용해서 뿌려주게 만들었는데요.
이상하게 longPress가 아니라 단순 터치시에도 LongPress 함수가 호출이 됩니다.
Log로 찍어봤더니 onDown -> onShortPress -> onLongPress 순으로 함수가 불리는데 말이죠.
어디가 잘못된걸까요?