Нежелательное нажатие на элемент в ItemizedOverlay во время масштабирования с помощью мультитач - PullRequest
0 голосов
/ 02 марта 2011

Когда пользователь увеличивает масштаб карты с помощью мультитача, он всегда касается элемента в моем ItemizedOverlay.

Как сделать так, чтобы мой MapView не вызывал onTap из оверлея, если пользователь на самом деле мультитач для масштабирования?

Ответы [ 2 ]

1 голос
/ 02 марта 2011

может быть способ

, вы можете получить уровень масштабирования текущего вида карты в вашем методе onTap, и если вы обнаружили, что он отличается от предыдущего, вы можете вызвать return

Я надеюсь, что это решит вашу проблему.

0 голосов
/ 03 декабря 2012

Я тоже столкнулся с этой проблемой.

Идея 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;
            }
            //...
        }
...