Отключите панорамирование/масштабирование в com.google.android.maps.MapView.

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

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


person Juliusz    schedule 01.09.2010    source источник
comment
Это решение может помочь вам stackoverflow.com/questions/6439811/   -  person Dwayne    schedule 23.02.2012


Ответы (7)


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

person CommonsWare    schedule 01.09.2010
comment
О, я вижу, что происходит сейчас, кажется, мои попытки установить OnClickListener в mapView вызывали прокрутку, несмотря на то, что в файле макета установлено значение android:clickable=false - person Juliusz; 01.09.2010
comment
Все еще остается проблема OnClickListener на mapView - person Juliusz; 01.09.2010
comment
@Julius: MapView с закрытым исходным кодом. Никто не ответит на ваш onClickListener вопрос. - person CommonsWare; 01.09.2010

Для версии 2 API Карт Google для Android это так:

map.getUiSettings().setScrollGesturesEnabled(false);
person Sveinung Kval Bakken    schedule 16.06.2013
comment
не отключает все жесты. Проверьте мой ответ - person Taranfx; 24.12.2013

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

mapView.getMap().getUiSettings().setAllGesturesEnabled(false);
person Taranfx    schedule 24.12.2013
comment
Обратите внимание, что вопрос относится к эпохе Maps API v1. Этот ответ для API v2. - person laalto; 24.12.2013
comment
@laalto Все, кто проверяет это сейчас, используют v2. Поможет всем, кто сегодня увидит ответы - person Taranfx; 24.12.2013

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

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

person ojas    schedule 15.06.2011

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

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

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

Как отключить сжатие в Android MapView

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

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

person AgentKnopf    schedule 21.04.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);
}
person theWalker    schedule 01.12.2012

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

gMap.getUiSettings().setZoomGesturesEnabled(false);

чтобы отключить все предположения

gMap.getUiSettings().setAllGesturesEnabled(false);

удачного кодирования :)

person Ashana.Jackol    schedule 22.05.2017