Android MapVIew:如何通过简单的点击检测运动?

时间:2012-10-22 09:58:13

标签: android ontouchevent

我有一个问题,即如何定义何时进行移动动作以及何时只需点击MapView中的地理点。事情是,当我点击以下evEnts时出现:ACTION_DOWN(1 fire),ACTION_MOVE(3 FIRES),ACTION_DOWN(1 fire)。当我移动时,会出现以下事件:ACTION_DOWN(1 fire),ACTION_MOVE(LOT FIRES),ACTION_DOWN(1 fire)。

如何定义它,并且它不会在onTap函数中为一个地理点的alertDialog?

我做了什么,但我有点乱:

  @Override
    protected boolean onTap(int index) {
    Log.i("Tapped? ", "TAP!");
    if (mOverlays.get(index) != null && !touchStarted) {
        OverlayItem item = mOverlays.get(index);
        alert.showAlertDialog(mContext, item.getTitle(), item.getSnippet(), true);
        return true;
    } else {
        return false; // Null GeoPoint
    }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event, MapView mapView) {

    Log.e("Touch", Integer.toString(event.getAction()));

    int action = event.getAction();
    if (action == MotionEvent.ACTION_DOWN) {
        touchStarted = true;
    } else if (action == MotionEvent.ACTION_MOVE) {
        // movement: cancel the touch press

        touchStarted = false;

        if (event.getPointerCount() > 3)
        Log.e("Movement", "Yeee");
        return true;

    }
    return true;
    }

1 个答案:

答案 0 :(得分:0)

在您的活动中实现onDoubleTapListener以查找tap事件,并且在onTouchEvent中,您将能够处理Move事件。使用switch case检查移动和其他操作,而不是if语句来提高性能

例如,如果abc是您的活动类,那么

public class abc extends Activity implements OnDoubleTapListener{
    //Double tap listener

    public boolean onSingleTapConfirmed(MotionEvent event) {
       //your code
    }
}