选择特定注释

时间:2012-02-20 14:34:36

标签: objective-c xcode annotations mapkit

我正在循环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”始终是不同的注释,而不是第二个数据库结果。

在我将注释添加到地图之前,有没有办法可以为注释添加一个唯一的ID,然后我可以使用它来选择它们?

1 个答案:

答案 0 :(得分:3)

注释可以是您想要的任何自定义对象,只要它符合MKAnnotation协议(see here

因此,如果您需要注释具有ID,则可以在自定义注释对象的代码中为其声明属性。