2012-06-26 4 views
1

지도에 여러 포인트를 표시하려고합니다. iPhone지도 애플리케이션의 다중 핀 포인트

나는

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 [email protected]"image_%d.png",i]; 

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

이 코드를 시도했지만 마지막 핀은지도에 있습니다.

listArray로 해결할 수 있습니까? 가능한 경우 objective-c로 객체에 Array를 어떻게 만들 수 있습니까?

답변

3

당신은

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 [email protected]"image_%d.png",i]; 

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

} 이 작동합니다 아래 코드를 수정 각 주석 에 대한 DisplayMap 객체를 생성 할

또는 배열 사용할 수 있습니다

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 [email protected]"image_%d.png",i]; 
    ann.coordinate=region.center; 

    [annotationArray addObject:ann]; 
} 
for(DisplayMap *ann in annotationArray) { 
    [mapView addAnnotation:ann]; 
    } 
+0

나는 또한 그것을 시도했다. 그러나 그것은 단지 마지막 핀만 뒀다. – irukeru

+0

이 루프를 for 루프에 추가하고 시도하십시오. MKCoordinateRegion region = {{0.0, 0.0}, {0.0, 0.0}}; \t region.center.latitude = 26.438047 + i; region.center.longitude = 50.116422 + i; \t region.span.longitudeDelta = 0.01f; \t region.span.latitudeDelta = 0.01f; –

1

ann inside for loop를 할당하고 해제해야합니다.

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 [email protected]"image_%d.png",i]; 

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

} 
+0

실제로 [ann release]를 추가하면 "release is unavailable"오류가 발생합니다. – irukeru

+0

ARC를 사용하고 있으므로 [ann release]를 제거하십시오. 그것은 작동 할 것이다 – rakeshNS

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]; 
    } 
관련 문제