Как узнать, какая аннотация была нажата? - PullRequest
0 голосов
/ 25 июля 2011

Я делаю просмотр карты. В моем приложении есть код, который получает текущее местоположение пользователя по широте и долготе. Используя эти координаты, я создаю запрос на мыло. В ответ я получу информацию (почтовый индекс, город, штат, страна, координаты) местоположений. Я сохранил эту информацию в NSDictionary.

Это код для создания аннотации.

MapLocation *annotation = [[MapLocation alloc] initWithCoordinate:location ownerInst:ownerInstitution];
    [mapView addAnnotation:annotation];
    [annotation release];


- (MKAnnotationView *) mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>) annotation {

MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
annView.pinColor = MKPinAnnotationColorGreen;
annView.animatesDrop=TRUE;
annView.canShowCallout = YES;

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[infoButton addTarget:self action:@selector(infoButtonPressed) forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView = infoButton;


annView.calloutOffset = CGPointMake(-5, 5);
return annView;
}

Это метод делегата, когда пользователь нажимает кнопку detaildisclosure в выноске.

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control

При нажатии кнопки раскрытия подробностей будет загружен новый вид. И в этом новом представлении будет отображаться информация, которую я получил с сервера.

До этого все хорошо. У меня есть несколько аннотаций на карте. Но при нажатии конкретной аннотации, как я реализую код, чтобы показать информацию (которую я получаю с сервера), связанную с этой аннотацией.

Надеюсь, я ясно выразил свою проблему. Не стесняйтесь спрашивать более подробную информацию.

1 Ответ

0 голосов
/ 25 июля 2011

MKAnnotationView *view, который вы получаете из метода делегата, содержит аннотацию.Вы можете хранить всю информацию в вашем классе MapLocation, которую нужно отобразить.

MapLocation *annotation = [[MapLocation alloc] initWithCoordinate:location ownerInst:ownerInstitution];
[mapView addAnnotation:annotation];
[mapView addAdditionalCustomInformation: SomeInfo]; //you need to write your custom methods for that ;)
[annotation release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...