2012-12-07 117 views
0

我正在使用以下代碼來顯示地圖(Google API) 我希望它在用戶DOUBLE單擊地圖上的任何位置時進行縮放。我怎樣才能實現它?雙擊放大谷歌地圖API - Android

public class TourMapActivity extends MapActivity { 


@Override 
protected void onCreate(Bundle arg0) { 

    super.onCreate(arg0); 

    setContentView(R.layout.tour_map); 
    mMapView = (MapView)findViewById(R.id.MapView); 
    mMapView.setBuiltInZoomControls(true); 
    mMapView.getZoomButtonsController().setVisible(true); 




} 


@Override 
protected boolean isRouteDisplayed() { 

    return true; 
} 

class CustomOverlay extends ItemizedOverlay<CustomItem> { 

    protected ArrayList<CustomItem> mOverlays = new ArrayList<CustomItem>(); 
    public OnTapListenerIndex mOnTapListenerIndex = null; 
    private Context mContext; 

    public CustomOverlay(Drawable defaultMarker) { 
     super(boundCenterBottom(defaultMarker)); 
    } 


    public CustomOverlay(Drawable defaultMarker, Context context) 
    { 
     super(boundCenterBottom(defaultMarker)); 
     mContext = context; 
    } 

    @Override 
    protected CustomItem createItem(int i) { 
     return mOverlays.get(i); 
    } 

    @Override 
    public int size() { 
     return mOverlays.size(); 
    } 

    public void addOverlay(CustomItem overlay) { 
     mOverlays.add(overlay); 
     populate(); 
    } 

    public void addOverlay(CustomItem overlay, Drawable marker) { 
     overlay.setMarker(boundCenterBottom(marker)); 
     addOverlay(overlay); 
    } 

    @Override 
    public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow) { 
     super.draw(canvas, mapView, false); 
    } 




} 

public interface OnTapListenerIndex { 

    public void onTapEvent(int index, OverlayItem overlayItem); 
} 

}

我希望它放大,當用戶雙擊任何地方在地圖上。我怎樣才能實現它?

回答

0

看一看這樣的:https://stackoverflow.com/a/12646465/1885518http://nocivus.posterous.com/double-clicktap-detection-on-a

總之覆蓋onInterceptTouchEvent()

@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 { 
      lastTouchTime = thisTime; 
     } 
    } 
}