2012-02-20 16 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"は常に別のアノテーションであり、2番目のデータベース結果ではありません。

注釈をマップに追加する前にアノテーションに固有のIDを与える方法はありますか?

答えて

3

注釈は、あなたが望む任意のカスタムオブジェクトで、それはあなたがIDを持っているあなたの注釈を必要とするのであれば、あなたはコードでのプロパティを宣言することができますMKAnnotationプロトコル(see here

に準拠して提供することができますカスタム注釈オブジェクト用

+0

私は注釈オブジェクトにIDを追加しました。(@property(nonatomic、retain)NSNumber * annotationid;) 'このような注釈を追加します:' MapViewAnnotation * newAnnotation = [[MapViewAnnotation alloc] initWithTitle:venuename andCoordinate:location andid:thisid]; 'これはIDを持つためです。しかし、このラインはどのように見えなければならないでしょうか。 "annotationid" 23で注釈を呼び出しますか? 'id myAnnotation = [mapView.annotations objectAtIndex:0]; [mapView selectAnnotation:myAnnotation animated:NO]; ' – user1104325

+0

注釈を繰り返して、必要なIDを持つ注釈を見つけることができます。 'for(mapView.notationの注釈){if(annotation.id == 23);}' – ale84

+0

でした。ありがとうたくさん(: – user1104325

関連する問題