How to select a map pin programmatically

12,203

Solution 1

The method that you are looking for is selectAnnotation:.

In your didSelectRowAtIndexPath, you have to find the annotation associated with the table row.

Once you find it, you can tell it, to select it by using:

[mapView selectAnnotation:foundAnnotation animated:YES];

Solution 2

The same as the Objective C answer, in your tableview you have a list of annotations. In Swift in the didSelectRow:

For Swift 4:

// annotations would be the array of annotations - change to your required data sets name
let selectedAnnotation = annotations[indexPath.row]
self.mapView.selectAnnotation(selectedAnnotation, animated: true)

Short and simple.

Share:
12,203

Related videos on Youtube

Babul
Author by

Babul

Working as iOS Developer. Here to learn and share knowledge

Updated on October 24, 2022

Comments

  • Babul
    Babul over 1 year

    I am new to Maps Concept.

    Please find the attached image once.

    enter image description here

    when i click the "pin" i am getting message says "Admire your smile" or any text..... Now i want like... when we select the table view, i need to raise that message for that pin(with out user interaction for that pin)...

    I am using below code for This maps and pins.

        -(void) viewWillAppear:(BOOL)animated
    {
    [super viewWillAppear:YES];
    customLocation.latitude=[casesobjc.latitude_string doubleValue];
            customLocation.longitude=[casesobjc.longitude_string doubleValue];
     MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:casesobjc.locationForMap_string andCoordinate:customLocation];
    [mapView addAnnotation:newAnnotation];
    }
    - (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id<MKAnnotation>) annotation {
     MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @"annotation_ID"];
    if (pin == nil) {
            pin = [[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"annotation_ID"];
        } else {
            pin.annotation = annotation;
        }
        pin.pinColor = MKPinAnnotationColorPurple;
        pin.animatesDrop = YES;
        pin.canShowCallout=YES;
    return pin;
    }
    

    Now i will show all the pins once like below.

    enter image description here

    How to do When we click on table view i need to show the title for that pin like how we show when we select a pin?

    Thanks in Advance

  • SanitLee
    SanitLee about 9 years
    I think I have quite a similar issue. Could you please help take a look into my question also? I just cannot figure it out especially on how to find the annotation associated with the table row.