在通过多点触摸进行缩放期间,在项目大小覆盖中的项目上不需要点击

时间:2011-03-02 18:31:41

标签: android map touch

当用户通过多点触控缩放地图时,总是会点击我的ItemizedOverlay中的项目。

如果用户实际上是多重进行重新连接,如何让我的MapView不调用覆盖的onTap?

2 个答案:

答案 0 :(得分:1)

可能有办法

您可以在onTap方法中获取当前地图视图的缩放级别,如果您发现它与上一个不同,则可以调用return

我希望这能解决你的问题。

答案 1 :(得分:0)

我也遇到了这个问题。

rohit mandiwal的想法很好,但是如果用户放大然后缩小到同一级别,可能仍会发生不需要的点击事件。

解决方案是检测onTouchEvent()而不是onTap()中的缩放级别更改。我试过这个,似乎工作。 这是我的代码:

private class LocationOverlay extends ItemizedOverlay<OverlayItem> {
        private int lastZoomLevel;
        private boolean onTapAllowed;

        public LocationOverlay(...) {
            //...
            lastZoomLevel=mapView.getZoomLevel();    
        }

        @Override
        public boolean onTouchEvent(MotionEvent motionEvent, MapView mapView) {
            if (mapView.getZoomLevel()!=lastZoomLevel) {
                lastZoomLevel=mapView.getZoomLevel();
                onTapAllowed=false;
            }
            return super.onTouchEvent(motionEvent, mapView);
        }

        @Override
        public boolean onTap(GeoPoint geoPoint, MapView mapView) {
            if (!onTapAllowed) {
                Log.d("onTap","onTap cancelled, zoom level changed...");
                lastZoomLevel=mapView.getZoomLevel();
                onTapAllowed=true;
                return true;
            }
            //...
        }