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); } }