2017-05-03 20 views
1

如何在放置位于地图片段底部的线性布局时停止地图缩放。任何人都可以帮助我。 。当双击或捏合位于地图片段下方的线性布局时,防止Google地图缩放

这是我的代码来捕获单和双击事件

public boolean dispatchTouchEvent(MotionEvent ev) { 

      Log.d("on dispatchTouchEvent ", " dispatchTouchEvent "); 
      switch (ev.getAction() & MotionEvent.ACTION_MASK) { 




       case MotionEvent.ACTION_POINTER_DOWN: 
        fingers = fingers + 1; 

        break; 
       case MotionEvent.ACTION_POINTER_UP: 

        fingers = fingers - 1; 
        break; 
       case MotionEvent.ACTION_UP: 
        fingers = 0; 
        break; 
       case MotionEvent.ACTION_DOWN: 


        if (firstClick != 0 && System.currentTimeMillis() - firstClick > 300) { 
         Log.w("on count=0", " count=0 "); 
         count = 0; 
        } 
        count++; 
        if (count == 1) { 
         Log.w("on count ", " count=1 "); 
         firstClick = System.currentTimeMillis(); 
        } else if (count == 2) { 
         Log.w("on count ", " count=2 "); 
         lastClick = System.currentTimeMillis(); 
         if (lastClick - firstClick < 300) { 

          CameraUpdate getzoom = CameraUpdateFactory.zoomIn(); 
          mMap.animateCamera(getzoom, 400, null); 
          Log.w("on double click ", " event "); 
         } 

        } 


        fingers=1; 
        break; 
      } 

      if (fingers >1) { 

       Log.d("2fingersaction ", "2fingersaction "); 
       mMap.getUiSettings().setScrollGesturesEnabled(false); 
       // mMap.getUiSettings().setRotateGesturesEnabled(true);   // disableScrolling() 
      } 
      else if (fingers < 1) 
      { 
       Log.d("onefinger ", "onefinger "); 
       mMap.getUiSettings().setAllGesturesEnabled(false); 

       mMap.getUiSettings().setScrollGesturesEnabled(true); 
       // enableScrolling(); 
      } 
} 

我把这个代码出方的OnMapReady()方法..

这里是我的应用程序.. enter image description here的屏幕截图。

回答

0

``我终于得到了答案..

首先,我们需要通过获取Xpoint和Ypoint激活只在mapfragment上的触摸事件。

并检查dispatchTouchEvent(MotionEvent ev),方法中触摸事件的条件...确保如果我们触摸mapfragment,那么只需要激活触摸动作或捏一个ction ...

enter code here 
+0

布尔isWithinMapBounds(浮动XPOINT,浮动yPoint){ \t \t int [] l = new int [2]; \t \t View mapView = mapFragment.getView(); \t \t mapView.getLocationOnScreen(l); \t \t int x = 1 [0]; \t \t int y = 1 [1]; \t \t int w = mapView.getWidth(); \t \t int h = mapView.getHeight(); \t \t如果(XPOINT X + W || yPoint Y + 1H){ \t \t \t返回假; \t \t} \t \t return true; \t} –

+0

这个地方在调度触摸事件方法public boolean值dispatchTouchEvent(MotionEvent EV){ \t \t如果(!isWithinMapBounds(ev.getRawX(),ev.getRawY())){ \t \t \t回报super.dispatchTouchEvent (EV); \t \t} –

0

我在我的应用程序中有类似的要求,结果答案很简单。

在您的线性布局设置以下属性为true:

android:clickable="true" 

现在这样做是什么让你的布局拦截触摸事件,并且不让它去到地图中。因此,它适用于所有手势和触摸事件..

希望这有助于..

干杯:d

+0

对不起兄弟@Arjun它不工作...我需要停止缩放当我触摸地图片段之外... –