Отключить перемещение по карте - PullRequest
18 голосов
/ 01 апреля 2011

Можно ли отключить перемещение внутри карты Google?

Ответы [ 7 ]

52 голосов
/ 11 февраля 2015

Даже при том, что есть принятый ответ, просто предоставив мой ответ, поскольку он не помог мне. mapView.setClickable (false) не работает постоянно, как в случаях, когда у вас есть mapView внутри scrollView. Поэтому я создал объект вида прямо над mapView того же размера.

Обработал onTouchListener для моего наложения и передал все сенсорные события родителю mapView (в моем случае ScrollView), следовательно, пропустив все сенсорные события из mapView в scrollview.

Еще один способ достичь - сделать

mMap.getUiSettings().setAllGesturesEnabled(false);
11 голосов
/ 15 февраля 2017
mMap.getUiSettings().setScrollGesturesEnabled(false);

это может отключить перемещение по карте

2 голосов
/ 19 апреля 2011

Возможно, вы захотите установить setClickable (false), но вы также, вероятно, захотите установить setFocusable (false), чтобы предотвратить фокусировку MapView.

Это может быть проблемой, когда пользователь использует аппаратные навигационные кнопки, потому что, если у MapView есть фокус, кнопки вверх-вниз-влево-вправо будут прокручивать карту.

0 голосов
/ 18 января 2018

Мы можем остановить взаимодействие с пользователем с помощью MapView или SupportMapFragment , используя GoogleMapOptions

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val mapOptions = GoogleMapOptions()
        mapOptions.rotateGesturesEnabled(false)
        mapOptions.zoomGesturesEnabled(false)
        mapOptions.tiltGesturesEnabled(false)
        mapOptions.scrollGesturesEnabled(false)

        // Map View
        val mapView = MapView(context, mapOptions)
        mapView.onCreate(savedInstanceState)

        // Or
        val mapView = MapView(context
        mapView.getMapAsync { googleMap ->
           googleMap.uiSettings.setAllGesturesEnabled(false) 
        }

       // Or Map Fragment
       val mapFragment = SupportMapFragment.newInstance(mapOptions)
}
0 голосов
/ 16 января 2018

Я создал customMapView, который расширяет MapView и переопределить метод onInterceptTouchEvent.

public class customMapView extends MapView {
    public customMapView(Context context) {
        super(context);
    }

    public customMapView(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
    }

    public customMapView(Context context, AttributeSet attributeSet, int i) {
        super(context, attributeSet, i);
    }

    public customMapView(Context context, GoogleMapOptions googleMapOptions) {
        super(context, googleMapOptions);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {

//      return super.onInterceptTouchEvent(ev);
        return true;
    }

}
0 голосов
/ 01 апреля 2011

Возможно, это может быть решением:

mapView.setEnabled (ложь)

0 голосов
/ 01 апреля 2011

Если вы встроите вид карты в свое приложение, я думаю, что вы можете использовать статические карты для просмотра того же самого.

...