How to open call out MKAnnotationView programmatically? (iPhone, MapKit)

callouts, ios, iphone, mapkit, mkannotation

Solution

In your mapViewController create an action method:

- (void)openAnnotation:(id)annotation 
{
    //mv is the mapView
    [mv selectAnnotation:annotation animated:YES];

}

You can then determine the closest annotation based on current location and walking the annotations available in the array.

[mv annotations];

Once the closest annotation is calculated, call:

[self openAnnotation:closestAnnotation];

The mapView should scroll automatically to place your annotation in the center of the display area.

Problem

I want to open up the callout for an `MKPinAnnotationView` programmatically. Eg I drop 10 pins on the map, and want to open up the one closest to me. How would I go about doing this? Apple has specified the 'selected' parameter for `MKAnnotationView's`, but discourages setting it directly (this doesn't work, tried it). For the rest `MKAnnotationView` only has a setHighlighted (same story), and can `ShowCallout` method.. Any hints if this is possible at all?

Original source