2012-02-20 94 views
1

我通過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]; 

} 

的偉大工程。現在,讓我們說,我想選擇3ND註釋,我做

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

然而,似乎註釋被添加到隨機地圖,而不是根據我的循環順序。所以「objectAtIndex:2」總是一個不同的註釋,而不是第二個數據庫結果。

在將地圖添加到地圖之前,我可以如何給某個註釋添加註釋,然後我可以使用它來選擇它們?

回答

3

的註釋可以是任何你想要的自定義對象,爲其提供符合MKAnnotation協議(see here

所以,如果你需要你的註解,有一個ID,就可以在代碼中聲明一個屬性爲它爲自定義註釋對象。

+0

好吧,我已經添加了一個ID到註釋對象'(@property(nonatomic,retain)NSNumber * annotationid;)'我現在添加我的註釋,像這樣:MapViewAnnotation * newAnnotation = [[MapViewAnnotation alloc] initWithTitle:venuename和Coordinate:location andid:thisid];'所以他們有一個ID。但是這條線如何看待用「annotationid」23調用Annotation? 'id myAnnotation = [mapView.annotations objectAtIndex:0]; [mapView selectAnnotation:myAnnotation animated:NO];' – user1104325 2012-02-21 06:35:15

+0

你可以循環註解並找到你想要的ID。 'for(MapViewAnnotation *註解在mapView.annotations){if(annotation.id == 23);}' – ale84 2012-02-21 08:42:41

+0

它做到了。非常感謝(: – user1104325 2012-02-21 09:40:39