Отключить панорамирование / увеличение в com.google.android.maps.MapView - PullRequest
12 голосов
/ 01 сентября 2010

Как я могу отключить функцию панорамирования / масштабирования в MapView (не управление масштабированием, я хочу полностью статическую карту)?

Я также заметил, что касание карты, по-видимому, не вызывает MapView onClickListener, кто-нибудь может объяснить, почему?

Ответы [ 7 ]

21 голосов
/ 16 июня 2013

Для версии 2 API Карт Google для Android это может быть следующим:

14 голосов
/ 24 декабря 2013

Это гарантированно работает

mapView.getMap().getUiSettings().setAllGesturesEnabled(false);
11 голосов
/ 01 сентября 2010

Используйте android:clickable="false" в вашем файле макета.

1 голос
/ 22 апреля 2012

У меня был тот же вопрос, и следующее решение - лучшее, которое я смог найти, и оно отвечало моим требованиям:

mapView.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getPointerCount() > 1) {
                return true;
            }
            return false;
        }
    });

Как написал Александр Штольц здесь:

Как отключить пинч в Android MapView

А вот и причина:

Он не запрещает полностью нажимать на mapView - он только захватывает и предотвращает жесты двумя пальцами (для масштабирования вам нужно два пальца) - постукивание по карте (например, при наложении) все еще работает.

1 голос
/ 15 июня 2011

Пожалуйста, используйте Overlay, чтобы получить событие касания на карте

http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/Overlay.html

0 голосов
/ 22 мая 2017

в вашем onMapReady методе, добавьте эти строки кода

gMap.getUiSettings().setZoomGesturesEnabled(false);

, чтобы отключить все варианты

gMap.getUiSettings().setAllGesturesEnabled(false);

счастливое кодирование:)

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

это правильный путь

@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{   
    switch (ev.getAction()&MotionEvent.ACTION_MASK)
    {
        case (MotionEvent.ACTION_DOWN):
        {   
            // do what you want
            // you may scroll map where you want
            // don't use 'break', the same in case pointer events;

            //break;
            return true;
        }
    }
    // 'super' go to the mapView procedures and scroll map in own algorithm
    return super.dispatchTouchEvent(ev);
}
...