1

マップ上に複数のポイントを表示しようとしています。

私は試した

DisplayMap *ann = [[DisplayMap alloc] init];   


 for( int i =1;i<=5;i++ ){
     region.center.latitude = 26.438047+i;
     region.center.longitude = 50.116422+i;
     ann.title = [NSString stringWithFormat:@"title %d",i)];
     ann.subtitle =[NSString stringWithFormat:@"subtitle %d",i)];
     ann.image = [NSString stringWithFormat@"image_%d.png",i];

     ann.coordinate=region.center;
     [mapView addAnnotation:ann];
  }
 [ann release];

このコードですが、最後のピンのみがマップ上にあります。

listArray またはそのようなものでこれを解決できますか? 可能であれば、objective-c を使用してオブジェクトの Array を作成するにはどうすればよいですか?

4

3 に答える 3

3

アノテーションごとにDisplayMapオブジェクトを作成し、以下のようにコードを変更します

for( int i =1;i<=5;i++ ){
  DisplayMap *ann = [[DisplayMap alloc] init];   
  region.center.latitude = 26.438047+i;
  region.center.longitude = 50.116422+i;
  ann.title = [NSString stringWithFormat:@"title %d",i)];
  ann.subtitle =[NSString stringWithFormat:@"subtitle %d",i)];
  ann.image = [NSString stringWithFormat@"image_%d.png",i];

  ann.coordinate=region.center;
  [mapView addAnnotation:ann];

}これは機能します

または、配列を使用できます

 NSMutableArray *annotationArray = [NSMutableArray alloc]init];
 for(int i = 0; i <= 5; i++) {

   DisplayMap *ann = [[DisplayMap alloc] init];   
   region.center.latitude = 26.438047+i;
   region.center.longitude = 50.116422+i;
   ann.title = [NSString stringWithFormat:@"title %d",i)];
   ann.subtitle =[NSString stringWithFormat:@"subtitle %d",i)];
   ann.image = [NSString stringWithFormat@"image_%d.png",i];
   ann.coordinate=region.center;

   [annotationArray addObject:ann];
 }
 for(DisplayMap *ann in annotationArray) {
  [mapView addAnnotation:ann];
  }
于 2012-06-26T08:56:42.157 に答える
1

forループ内でannを割り当てて解放する必要があります。

 for( int i =1;i<=5;i++ ){

 region.center.latitude = 26.438047+i;
 region.center.longitude = 50.116422+i;

 ann = [[Annotation alloc]init];  //Replace according to your code
 ann.title = [NSString stringWithFormat:@"title %d",i)];
 ann.subtitle =[NSString stringWithFormat:@"subtitle %d",i)];
 ann.image = [NSString stringWithFormat@"image_%d.png",i];

 ann.coordinate=region.center;
 [mapView addAnnotation:ann];
 [ann release];

}
于 2012-06-26T08:55:48.460 に答える
1

これを試して

for (int i=0; i<5; i++) {

        lat=m_strLatittude+i;
        lon=m_strLongitude+i;

        MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } }; 
        region.center.latitude = [lat doubleValue];
        region.center.longitude = [lon doubleValue] ;


        region.span.latitudeDelta=mapView.region.span.latitudeDelta;
        region.span.longitudeDelta=mapView.region.span.longitudeDelta;
        [mapView setRegion:region animated:YES]; 


        [mapView setDelegate:self];
        DisplayMap *ann = [[DisplayMap alloc]init]; 
        ann.title = name1;
        ann.subtitle = Address2; 
        ann.coordinate = region.center; 

        [mapView addAnnotation:ann];
        [ann release];
    }
于 2012-06-26T09:08:02.283 に答える