Можно ли отключить панорамирование/масштабирование в Android MapView, позволяя пользователям нажимать на ItemizedOverlay?

Есть ли способ отключить панорамирование/масштабирование и оставить кликабельными наложения карт?

Я специально думаю о ItemizedOverlay, который я хочу использовать, запрещая пользователям перемещаться по области просмотра карты (это для игры).

Я видел ответ на тот же вопрос, но ответ, к сожалению, не позволяет щелкать элементы наложения.

Большое спасибо, с уважением, Алекс


person Alex Thiel    schedule 22.06.2011    source источник


Ответы (2)


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

Сначала вам нужно создать свой собственный подкласс карты, переопределяющий обработчик onTouchEvent.

public class NonPannableMapView extends MapView {

    public NonPannableMapView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);    
    }

    public NonPannableMapView(Context context, AttributeSet attrs){
        super(context, attrs);
    }

    public NonPannableMapView(Context context, String apiKey) {
         super(context, apiKey);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
          //Handle a move so there is no panning or zoom
          if(ev.getAction() == MotionEvent.ACTION_MOVE)
              return true;
      return super.onTouchEvent(ev);
    }
}

Тогда это просто случай изменения ссылки MapView в вашем макете на NonPannableMapView.

person Dwayne    schedule 23.02.2012

Попробуй это:

mapView.setBuiltInZoomControls(false);

Надеюсь, это работает! Развлекайся!

person Srichand Yella    schedule 22.06.2011
comment
Это просто включает встроенные элементы управления масштабированием, но я хочу, чтобы они были отключены, а также возможность панорамирования и масштабирования. - person Alex Thiel; 22.06.2011
comment
соответственно отключает их, но по-прежнему не влияет на масштабирование и панорамирование пальцами :/ - person Alex Thiel; 22.06.2011