Disable moving around in mapview

前端 未结 9 780
执念已碎
执念已碎 2020-12-16 11:06

Is it possible to disable moving inside the google map?

相关标签:
9条回答
  • 2020-12-16 11:36

    I created customMapView that extends MapView and override the onInterceptTouchEvent method.

    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 讨论(0)
  • 2020-12-16 11:39

    We can stop user interactions with MapView or SupportMapFragment using 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 讨论(0)
  • 2020-12-16 11:40

    Simply do scrollGesturesEnabled: false,

    0 讨论(0)
  • 2020-12-16 11:42

    Even though there is an accepted answer, just providing my answer as it didnt help me. mapView.setClickable(false) does not work all the time, like cases where you have a mapView inside a scrollView. So I created a view object right above the mapView of the same size.

    Handled the onTouchListener for my overlay view and passed all the touch events to the parent of mapView (ScrollView in my case), hence by-passing all the touch events from mapView to scrollview.

    One more way to achieve is by doing

    mMap.getUiSettings().setAllGesturesEnabled(false);
    
    0 讨论(0)
  • 2020-12-16 11:45

    Perhaps this could be a solution:

    mapView.setEnabled(false)

    0 讨论(0)
  • 2020-12-16 11:56

    You'll want to setClickable(false), but you'll also probably want to setFocusable(false) in order to prevent the MapView from getting focus.

    That can be a problem when the user uses the hardware navigation buttons, because if the MapView has focus then the up-down-left-right buttons will scroll the map.

    0 讨论(0)
提交回复
热议问题