2011-03-02 63 views
0

當用戶通過多點觸控縮放地圖它總是拍了拍我的ItemizedOverlay的項目。不需要點擊

如何使我的MapView不調用覆蓋的,如果的onTap用戶實際multitouches爲rezooming?

回答

0

我就遇到了這個問題了。

羅希特mandiwal的想法是好的,但如果用戶,例如,在放大後縮小到相同的水平,仍可能發生不必要的敲打事件。

解決方法是檢測onTouchEvent()中的縮放級別更改,而不是onTap()。我想這一點,似乎工作。 這裏是我的代碼:

private class LocationOverlay extends ItemizedOverlay<OverlayItem> { 
     private int lastZoomLevel; 
     private boolean onTapAllowed; 

     public LocationOverlay(...) { 
      //... 
      lastZoomLevel=mapView.getZoomLevel();  
     } 

     @Override 
     public boolean onTouchEvent(MotionEvent motionEvent, MapView mapView) { 
      if (mapView.getZoomLevel()!=lastZoomLevel) { 
       lastZoomLevel=mapView.getZoomLevel(); 
       onTapAllowed=false; 
      } 
      return super.onTouchEvent(motionEvent, mapView); 
     } 

     @Override 
     public boolean onTap(GeoPoint geoPoint, MapView mapView) { 
      if (!onTapAllowed) { 
       Log.d("onTap","onTap cancelled, zoom level changed..."); 
       lastZoomLevel=mapView.getZoomLevel(); 
       onTapAllowed=true; 
       return true; 
      } 
      //... 
     } 
1

有可能是一個辦法

你可以得到當前地圖視圖縮放級別在你中的onTap方法,如果你發現它與以前的不同,你可以調用return

我希望這能解決您的問題。