iphoneiosmapkitmkannotationcallouts

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


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?


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.