Double click/tap detection on android's MapView

10 years ago

If there is a cleaner way to do it, please share :)

Override the default MapView with your own implementation; Override the onInterceptTouchEvent method; Check if the last event was also a click and happened close by (say in the last 250ms);

If so,  it's a double tap; do whatever you want (in this case I zoom in on the last clicked point); If not, ignore :)

Here's the code (Sorry for the formatting mess, but... :)): import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import com.google.android.maps.MapView;

public class MyMapView extends MapView {

private long lastTouchTime = -1;

public MyMapView(Context context, AttributeSet attrs) {

super(context, attrs); }

@Override public boolean onInterceptTouchEvent(MotionEvent ev) {

if (ev.getAction() == MotionEvent.ACTION_DOWN) {

long thisTime = System.currentTimeMillis(); if (thisTime - lastTouchTime < 250) {

// Double tap this.getController().zoomInFixing((int) ev.getX(), (int) ev.getY()); lastTouchTime = -1;

} else {

// Too slow :) lastTouchTime = thisTime; } }

return super.onInterceptTouchEvent(ev); } }