2012-11-10 29 views
0

我在我的應用程序中獲得了MapView。 我有很多OverlayItems在裏面有一點可繪製的標記。縮放和MapView中的onTap正在混合,如何解決它?

如果我觸摸overlayitem,onTap()方法運行,並且我得到一個小對話框。 這是很好的作品,但有時當我嘗試使用多點觸控進行縮放時,手指位於overlayitem之上時,對話框在我完成縮放後出現。它有點兒怪異,因爲它不符合人體工程學,因爲在縮放後必須關閉即將出現的對話框。

我應該如何阻止我的應用程序從這個事件? 我不想讓onTap()在im放大時運行。

我onTouch活動,並與2個布爾值,但不工作嘗試過:

@Override 
    public boolean onTouchEvent(MotionEvent event, MapView mapView) { 

     int action = event.getAction() & MotionEvent.ACTION_MASK; 

     switch (action) { 
       case MotionEvent.ACTION_DOWN: { 
        actionIsDown= true; 
        break; 
       } 

       case MotionEvent.ACTION_POINTER_DOWN: { 

        pointerIsDown=true; 
         break; 
       } 
       case MotionEvent.ACTION_POINTER_UP: { 

        pointerIsDown= false; 
         break; 
       } 
       case MotionEvent.ACTION_UP: { 

        actionIsDown= false; 
         break; 
       } 
     } 


     return super.onTouchEvent(event, mapView); 
    } 

而且和Ontap:

@Override 
    protected boolean onTap(int index) 
    { 



      if(pointerIsDown==false && actionIsDown==false){ //...dialog here 

任何想法?

回答

2

您的代碼不工作,因爲onTap()被觸發時,MotionEvent.ACTION_POINTER_UPMotionEvent.ACTION_UP發生,而不是MotionEvent.ACTION_POINTER_DOWNMotionEvent.ACTION_DOWN

要正確測試它,您需要在UP動作中檢查動作是否用於縮放地圖,然後將其保存到布爾值。

示例代碼:

Geopoint center = new Geopoint(0,0); 
Boolean ignoreTap = false; 

@Override 
public boolean onTouchEvent(MotionEvent event, MapView mapView) { 

    int action = event.getAction() & MotionEvent.ACTION_MASK; 

    switch (action) { 
      case MotionEvent.ACTION_POINTER_DOWN: { 
      case MotionEvent.ACTION_DOWN: { 
       center = mapView.getMapCenter(); 
       ignoreTap = false; 
       break; 
      } 

      case MotionEvent.ACTION_UP: { 
      case MotionEvent.ACTION_POINTER_UP: { 
        if(center != mapView.getMapCenter()) 
        ignoreTap = true; 
        break; 
      } 
    } 
    return super.onTouchEvent(event, mapView); 
} 

onTap():使用地圖中心

@Override 
protected boolean onTap(int index) 
{ 
     if(!ignoreTap){ //...dialog here 

Note: I'm測試變焦,如多點觸摸變焦工作角落找尋位於手指之間的映射點中心,在縮放時導致中心更改。你也可以使用地圖的經度跨度。

+0

我做了什麼樣的初學者錯誤。萬分感謝的人! –

+0

不客氣:-) – Luis