2011-08-26 6 views
1
In my application i want to implement double tap event on map view.For this I'm using following code but doesn't seem to work.Please help me... 
Thanks in advance!! 
public class NooYawk extends MapActivity implements OnGestureListener, OnDoubleTapListener { 
    private MapView map=null; 
    private MyLocationOverlay me=null; 
    GeoPoint geoPoint; 
    MapController controller; 
    OverlayItem overlayItem; 
    PushPinMapView pushPinMapView; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

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

     // map.getController().setCenter(getPoint(40.76793169992044,-73.98180484771729)); 
     controller=map.getController(); 
     map.setStreetView(true); 
     map.setBuiltInZoomControls(true); 

     Drawable marker=getResources().getDrawable(R.drawable.blue); 
     marker.setBounds(0, 0, marker.getIntrinsicWidth(), 
       marker.getIntrinsicHeight()); 

     geoPoint=new GeoPoint((int)(19.182 *1E6),(int)(72.961 * 1E6)); 
     controller.animateTo(geoPoint); 
     overlayItem=new OverlayItem(geoPoint, "Current loc",""); 
     List<Overlay> listOverlays= map.getOverlays(); 
     SitesOverlay sitesOverlay=new SitesOverlay(marker); 
     sitesOverlay.addOverlay(overlayItem); 
     listOverlays.add(sitesOverlay); 
     controller.setZoom(6); 

    } 
@Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    } 


    private class SitesOverlay extends ItemizedOverlay<OverlayItem> { 
     private List<OverlayItem> items=new ArrayList<OverlayItem>(); 

     public SitesOverlay(Drawable marker) { 
      super(marker); 


     } 

     @Override 
     protected OverlayItem createItem(int i) { 
      return(items.get(i)); 
     } 

     @Override 
     public void draw(Canvas canvas, MapView mapView, 
       boolean shadow) { 
      super.draw(canvas, mapView, shadow); 

      boundCenterBottom(marker); 
     } 

     @Override 
     public int size() { 
      return(items.size()); 
     } 

     public void addOverlay(OverlayItem overlay) { 

      items.add(overlay); 

      //System.out.println("success"); 

      populate(); 

     } 
} 



@Override 
    public boolean onDown(MotionEvent e) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public void onLongPress(MotionEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
      float distanceY) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public void onShowPress(MotionEvent e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean onSingleTapUp(MotionEvent e) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean onDoubleTap(MotionEvent e) { 
     controller.zoomIn(); 
     return false; 
    } 

    @Override 
    public boolean onDoubleTapEvent(MotionEvent e) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean onSingleTapConfirmed(MotionEvent e) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

} 

답변

0

작동하지 않습니다 내가 잘못 될 수도 있지만 난 당신이 실제로 어디 코드에서 그 일을 볼 수 없습니다. 예를 들어 this을 살펴보십시오.

+0

@femi을 ... 답장을 보내 주셔서 감사합니다. 그러나 여전히 미안합니다. – android

+0

'MapActivity' 클래스는 재정의 할 수없는 자신의'GestureDetector'를 등록 할 수 있지만 코드를 업데이트하고 표시 할 수 있습니다 당신이 GestureDetector를 적절하게 만드는 것을 포함하고있는 소스는 아마 당신에게 도움을 줄 수있을 것입니다. – Femi

0

는이 작업, 을 처리하는 GestureDetector를 만들 수뿐만 아니라 당신은 (작품을)이 같은 일부 진드기를 구현할 수 있습니다

private long lastTouchTime = -1; 

@Override 
public boolean onTouchEvent(MotionEvent e, MapView mapView) { 
    long thisTime = System.currentTimeMillis(); 
    // 250 in TimeMillis is a good interval limit for a double click 
    if (thisTime - lastTouchTime < 250) { 
    // this is a double touch/tap 
    lastTouchTime = -1; 
    }else { 
    // this is a single touch/tap 
    lastTouchTime = thisTime; 
    } 
... 
} 

그것이 도움이되기를 바랍니다 ..

관련 문제