Выберите конкретную аннотацию - PullRequest
1 голос
/ 20 февраля 2012

Я перебираю результаты SQLite и добавляю аннотации на карту

 while(sqlite3_step(statement) == SQLITE_ROW) {

     double latitude = sqlite3_column_double(statement, 0);
     double longitude = sqlite3_column_double(statement, 1);

     MKPointAnnotation *point = [[MKPointAnnotation alloc] init];

     CLLocationCoordinate2D location;
     location.latitude = latitude;
     location.longitude = longitude;
     [point setCoordinate:(location)];
     [point setTitle:venuename];
     [point setSubtitle:@"hello"];

     [mapView addAnnotation:point];

     [point release];

 } 

Прекрасно работает.Теперь, допустим, я хочу выбрать 3-ю аннотацию, я делаю

id<MKAnnotation> myAnnotation = [mapView.annotations objectAtIndex:2];    
[mapView selectAnnotation:myAnnotation animated:NO];

Однако, похоже, аннотации добавляются на карту в случайном порядке, а не в соответствии с порядком моего цикла.Таким образом, «objectAtIndex: 2» - это всегда другая аннотация, а не второй результат базы данных.

Есть ли способ, как я могу дать аннотации какой-то уникальный идентификатор перед тем, как добавить их на карту, который затем я могу использовать для их выбора?

1 Ответ

3 голосов
/ 20 февраля 2012

Аннотацией может быть любой пользовательский объект, который вы хотите, при условии, что он соответствует протоколу MKAnnotation ( см. Здесь )

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

...