Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to disable user interaction on MKMapView?

How do you disable user interaction to an entire Map (MKMapView) in iOS? I just want to disable zooming, tapping, etc and show a static map. [self.mapView setUserInteractionEnabled:NO] didn't work. Found no working solutions via Google or other answers here on Stack (pls link if you find a working answer..). Targeting iOS 5. There should be an easier way to do this.

like image 575
eric Avatar asked Mar 14 '13 19:03

eric


3 Answers

The key is to disable zooms and scrolls.

In Objective-C:

self.mapView.zoomEnabled = false;
self.mapView.scrollEnabled = false;
self.mapView.userInteractionEnabled = false;

Or Swift:

mapView.isZoomEnabled = false
mapView.isScrollEnabled = false
mapView.isUserInteractionEnabled = false

By the way, if you want a static map, you might consider using MKMapSnapshotter instead. This creates an image representation of a map. If you have annotations or overlays, you have to render them manually, but, depending upon your use-case, map snapshots might do the job.

like image 137
Rob Avatar answered Oct 04 '22 12:10

Rob


You can do this in Interface Builder like this:

Like this

like image 25
Adam Waite Avatar answered Oct 04 '22 13:10

Adam Waite


How about this little hack! just place UIView on top of the MKMapView having all the same frame details. Also note that the backgroundColor of this view should be clearColor

like image 35
illuminatus Avatar answered Oct 04 '22 11:10

illuminatus