Как сохранить выбранный MKAnnotation? - PullRequest
3 голосов
/ 24 марта 2012

У меня есть приложение, которое имеет вид карты, и оно показывает 20 пинов (из массива) на карте. Когда пользователь нажимает на него, он может показать пузырь с правой кнопкой аксессуара. Вот и моя проблема: как узнать, какой штифт был нажат? Я кое-что слышал о методе mapView: didSelectAnnotationView, но я не совсем понимаю, как получить индекс pin / callout, чтобы я мог получить информацию об объекте с тем же индексом моего массива? Спасибо за любую помощь!

Ответы [ 2 ]

6 голосов
/ 24 марта 2012

Когда этот метод вызывается - поскольку ваш класс viewController принял MKMapViewDelegate, вы можете вызвать -indexOfObject для массива и получить индекс этого вывода (аннотацию). Это при условии, что в вашем массиве хранятся объекты класса аннотаций.

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
        // Annotation is your custom class that holds information about the annotation
        if ([view.annotation isKindOfClass:[Annotation class]]) {
            Annotation *annot = view.annotation;
            NSInteger index = [self.arrayOfAnnotations indexOfObject:annot];
        }
    }

Если вам нужно больше объяснений, нам нужно знать, как вы добавляете эти контакты, то есть реализацию - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation.

0 голосов
/ 27 марта 2012

Вот решение, аналогичное Canopus '.

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    if ([view.annotation isKindOfClass:[MyAnnotation class]]) 
    {
        NSInteger index = [mapView.annotations indexOfObject:view.annotation];
        NSLog(@"%d",index);
    }

Примечание: я вручную добавлял аннотации на карту и затем просматривал их соответствующие индексы.Они не индексируются в порядке их добавления в mapView.то есть только потому, что вы добавили аннотацию в качестве четвертой аннотации, она может иметь индекс 1 или 3 или что-то еще.У кого-то может быть объяснение этому, но оно ускользало от меня до сих пор.Надеюсь, это поможет.

...