9.2. Handling the Events of a Map View
Problem
You want to handle various events that a map view can send to its delegate.
Solution
Assign a delegate object that conforms to the MKMapViewDelegate protocol to the delegate property of an instance of the
MKMapView class:
-(void)viewDidLoad{[superviewDidLoad];/* Create a map as big as our view */self.myMapView=[[MKMapViewalloc]initWithFrame:self.view.bounds];/* Set the map type to Satellite */self.myMapView.mapType=MKMapTypeSatellite;self.myMapView.delegate=self;self.myMapView.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;/* Add it to our view */[self.viewaddSubview:self.myMapView];}
This code can easily run in the viewDidLoad method of a view controller object
that has a property named MapView of
type MKMapView:
#import "ViewController.h"#import <MapKit/MapKit.h>@interfaceViewController()<MKMapViewDelegate>@property(nonatomic,strong)MKMapView*myMapView;@end@implementationViewController
Discussion
The delegate object of an instance of the MKMapView class must implement the methods
defined in the MKMapViewDelegate
protocol in order to receive various messages from the
map view and, as we will see later, to provide information to the map
view. Various methods are defined in the MKMapViewDelegate protocol, such as the
mapViewWillStartLoadingMap: method that will get called in the delegate object whenever the map loading process starts. Bear in mind that a delegate for a ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access