2013-03-06 55 views

回答

0

最后我找到一种方法

public class MapActivity extends Activity{ 
     protected MapView mapView; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      mapView = (MapView) findViewById(R.id.map); 

      mapView .setTileSource(TileSourceFactory.MAPNIK); 
      MyOverlay myOverlay = new MyOverlay(getApplicationContext()); 


      //disable double tap 
      appendOverlay(myOverlay); 

      //do something here 

      //enable double top 
      removeOverlay(myOverlay); 
    } 
    protected void removerOverlay(Overlay overlay) { 
     final OverlayManager mng = map.getOverlayManager(); 

     if(mng.contains(overlay)) { 
       mng.remove(overlay); 
     } 

    } 
    protected void appendOverlay(Overlay overlay) { 
     final OverlayManager mng = map.getOverlayManager(); 

     if(!mng.contains(overlay)) { 
       mng.add(overlay); 
     } 

    } 

} 

这里是启用/禁用双击实际上mapView.setFocusable(假) 将无法​​满足我的东东类d喜欢这个解决方案

public class MyOverlay extends Overlay{ 

    public MyOverlay(Context ctx) { 
     super(ctx); 
     this.mapView = mapView; 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void draw(Canvas arg0, MapView arg1, boolean arg2) { 

    } 

    @Override 
    public boolean onDoubleTap(MotionEvent e, MapView mapView) { 
      //here return true means that I handled double tap event no 
      //one need to do anything for this event 

      //if you do not do anything here double tap will be disable. 
     return true; 
    } 
}