Quickly adding single pin to MKMapView?
I have a GPS coordinate (latitude, longitude) and I quickly want to place a single pin on a MKMapView showing that position. Everything works just fine, but as I only need a single pin with no callout is there a quicker way to do this or is what I have below what needs to be done?
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation {
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"DETAILPIN_ID"];
[pinView setAnimatesDrop:YES];
[pinView setCanShowCallout:NO];
return pinView;
}
NB: I don't need to check for reusable annotation views as I am only using the pin to show a position in a detail view (which is destroyed and recreated the next time a detail view is requested).
Solution 1:
Instead of using the -mapView:viewForAnnotation:
method, just put the code for an MKPointAnnotation
into your -viewDidLoad
method. It won't animate the drop, but it is very easy.
// Place a single pin
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:centerCoordinate];
[annotation setTitle:@"Title"]; //You can set the subtitle too
[self.mapView addAnnotation:annotation];
Swift version:
let annotation = MKPointAnnotation()
let centerCoordinate = CLLocationCoordinate2D(latitude: 41, longitude:29)
annotation.coordinate = centerCoordinate
annotation.title = "Title"
mapView.addAnnotation(annotation)
Solution 2:
You can set the point and also the region like this:
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(lat, lon);
MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
MKCoordinateRegion region = {coord, span};
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:coord];
[self.staticMapView setRegion:region];
[self.staticMapView addAnnotation:annotation];
Solution 3:
Simply you can add it like:
mapView.mapType = MKMapType.standard
let location = CLLocationCoordinate2D(latitude: 23.0225,longitude: 72.5714)
let span = MKCoordinateSpanMake(0.05, 0.05)
let region = MKCoordinateRegion(center: location, span: span)
mapView.setRegion(region, animated: true)
let annotation = MKPointAnnotation()
annotation.coordinate = location
annotation.title = "Javed Multani"
annotation.subtitle = "Surat, India"
mapView.addAnnotation(annotation)
It looks like: