2011-03-02 62 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

我希望这能解决您的问题。