我正在循环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,然后我可以使用它来选择它们?
答案 0 :(得分:3)
注释可以是您想要的任何自定义对象,只要它符合MKAnnotation协议(see here)
因此,如果您需要注释具有ID,则可以在自定义注释对象的代码中为其声明属性。