Android 地图视图双击事件不显示';行不通 在我的应用程序中,我想在地图视图上实现双击事件。为此,我使用以下代码,但似乎不起作用。请帮助我。。。 提前谢谢!! 公共类NooYawk扩展了MapActivity实现OnTestureListener、OnDoubleTapListener{ 私有MapView map=null; private MyLocationOverlay me=null; 地质点; 地图控制器; 重叠项重叠项; PushPinMapView PushPinMapView; @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); map=(MapView)findviewbyd(R.id.map); //setCenter(getPoint(40.76793169992044,-73.98180484771729)); controller=map.getController(); map.setStreetView(真); map.setBuiltInZoomControls(真); Drawable marker=getResources().getDrawable(R.Drawable.blue); marker.setBounds(0,0,marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); 地质点=新的地质点((int)(19.182*1E6),(int)(72.961*1E6)); 控制器.animateTo(地质点); overlayItem=新的overlayItem(地质点,“当前位置”,“位置”); List listOverlays=map.getOverlays(); SitesOverlay SitesOverlay=新SitesOverlay(标记); sitesOverlay.addOverlay(overlayItem); listOverlays.add(sitesOverlay); 控制器。设置缩放(6); } @凌驾 受保护的布尔值isRouteDisplayed(){ //TODO自动生成的方法存根 返回false; } 私有类SitesOverlay扩展ItemizeOverlay{ 私有列表项=新的ArrayList(); 公共场地航道(可牵引标记){ 超级(标记); } @凌驾 受保护的OverlayItem createItem(int i){ 返回(items.get(i)); } @凌驾 公共空白绘制(画布、地图视图、地图视图、, 布尔阴影){ super.draw(画布、地图视图、阴影); 边界中心底部(标记); } @凌驾 公共整数大小(){ 返回(items.size()); } 公共void addOverlay(OverlayItem overlay){ 项目。添加(覆盖); //System.out.println(“成功”); 填充(); } } @凌驾 公共布尔onDown(运动事件e){ //TODO自动生成的方法存根 返回false; } @凌驾 公共布尔onFling(运动事件e1、运动事件e2、浮点速度X、, 浮动速度y){ //TODO自动生成的方法存根 返回false; } @凌驾 公开无效在线新闻(运动事件e){ //TODO自动生成的方法存根 } @凌驾 公共布尔onScroll(MotionEvent e1、MotionEvent e2、浮点距离X、, 浮动距离){ //TODO自动生成的方法存根 返回false; } @凌驾 在ShowPress上公开作废(运动事件e){ //TODO自动生成的方法存根 } @凌驾 公共布尔onSingleTapUp(运动事件e){ //TODO自动生成的方法存根 返回false; } @凌驾 公共布尔onDoubleTap(运动事件e){ controller.zoomIn(); 返回false; } @凌驾 公共布尔OnDoubleTapeEvent(运动事件e){ //TODO自动生成的方法存根 返回false; } @凌驾 公共布尔值OnSingleTapConfiged(运动事件e){ //TODO自动生成的方法存根 返回false; } }

Android 地图视图双击事件不显示';行不通 在我的应用程序中,我想在地图视图上实现双击事件。为此,我使用以下代码,但似乎不起作用。请帮助我。。。 提前谢谢!! 公共类NooYawk扩展了MapActivity实现OnTestureListener、OnDoubleTapListener{ 私有MapView map=null; private MyLocationOverlay me=null; 地质点; 地图控制器; 重叠项重叠项; PushPinMapView PushPinMapView; @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); map=(MapView)findviewbyd(R.id.map); //setCenter(getPoint(40.76793169992044,-73.98180484771729)); controller=map.getController(); map.setStreetView(真); map.setBuiltInZoomControls(真); Drawable marker=getResources().getDrawable(R.Drawable.blue); marker.setBounds(0,0,marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); 地质点=新的地质点((int)(19.182*1E6),(int)(72.961*1E6)); 控制器.animateTo(地质点); overlayItem=新的overlayItem(地质点,“当前位置”,“位置”); List listOverlays=map.getOverlays(); SitesOverlay SitesOverlay=新SitesOverlay(标记); sitesOverlay.addOverlay(overlayItem); listOverlays.add(sitesOverlay); 控制器。设置缩放(6); } @凌驾 受保护的布尔值isRouteDisplayed(){ //TODO自动生成的方法存根 返回false; } 私有类SitesOverlay扩展ItemizeOverlay{ 私有列表项=新的ArrayList(); 公共场地航道(可牵引标记){ 超级(标记); } @凌驾 受保护的OverlayItem createItem(int i){ 返回(items.get(i)); } @凌驾 公共空白绘制(画布、地图视图、地图视图、, 布尔阴影){ super.draw(画布、地图视图、阴影); 边界中心底部(标记); } @凌驾 公共整数大小(){ 返回(items.size()); } 公共void addOverlay(OverlayItem overlay){ 项目。添加(覆盖); //System.out.println(“成功”); 填充(); } } @凌驾 公共布尔onDown(运动事件e){ //TODO自动生成的方法存根 返回false; } @凌驾 公共布尔onFling(运动事件e1、运动事件e2、浮点速度X、, 浮动速度y){ //TODO自动生成的方法存根 返回false; } @凌驾 公开无效在线新闻(运动事件e){ //TODO自动生成的方法存根 } @凌驾 公共布尔onScroll(MotionEvent e1、MotionEvent e2、浮点距离X、, 浮动距离){ //TODO自动生成的方法存根 返回false; } @凌驾 在ShowPress上公开作废(运动事件e){ //TODO自动生成的方法存根 } @凌驾 公共布尔onSingleTapUp(运动事件e){ //TODO自动生成的方法存根 返回false; } @凌驾 公共布尔onDoubleTap(运动事件e){ controller.zoomIn(); 返回false; } @凌驾 公共布尔OnDoubleTapeEvent(运动事件e){ //TODO自动生成的方法存根 返回false; } @凌驾 公共布尔值OnSingleTapConfiged(运动事件e){ //TODO自动生成的方法存根 返回false; } },android,android-maps,Android,Android Maps,我认为您实际上必须创建一个手势检测器才能使用它:我可能错了,但我看不到您在代码中的任何地方实际这样做。请看一个例子。您可以创建一个手势检测器来处理此操作,但也可以实现一些类似的勾号(有效): private long lastTouchTime=-1; @凌驾 公共布尔onTouchEvent(MotionEvent e,MapView MapView){ long ThistTime=System.currentTimeMillis(); //250英寸的时间毫秒对于双击来说是一个很好的间隔限

我认为您实际上必须创建一个
手势检测器才能使用它:我可能错了,但我看不到您在代码中的任何地方实际这样做。请看一个例子。

您可以创建一个手势检测器来处理此操作,但也可以实现一些类似的勾号(有效):

private long lastTouchTime=-1;
@凌驾
公共布尔onTouchEvent(MotionEvent e,MapView MapView){
long ThistTime=System.currentTimeMillis();
//250英寸的时间毫秒对于双击来说是一个很好的间隔限制
如果(这次-上次接触时间<250){
//这是双击/轻触
lastTouchTime=-1;
}否则{
//这是一次触摸/轻触
lastTouchTime=这次;
}
...
}

希望对您有所帮助。

好吧,
MapActivity
类完全有可能注册它自己的
GestureDetector
,您不能覆盖它,但是更新您的代码并显示包含您正确创建GestureDetector的源代码,也许我们可以为您找到一些帮助。
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;
    }

}
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;
  }
...
}