2013-10-24 2 views
1

Я бросаю несколько контактов на карте, где мне нужно отображать разные изображения для всех контактов, для которых я делаю код ниже.Mapview delegete не вызывает при добавлении Аннотации в ios7

- (void)dropMultiplePinAnnotation:(NSArray *)arrThumbnail 

    { 
     [self removeAnnotations:[self annotations]]; 

     for(Annotation *Annot in arrThumbnail) { 

      self.pinImageName = Annot.PinImage; 
      Annot.coordinate = Detail.coordinate; 
      [self addAnnotation:Annot]; 
      //Till ios6, after this line viewForAnnotation gets called so that I can assign new pin image everytime but in ios7 viewforAnnotation called after this loop ends so it set pin image which was latest saved in self.pinImageName 
     }  
    } 

- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation 
    { 

    static NSString *AnnotViewID = @"annotViewID"; 
     MKAnnotationView *annotationView = (MKAnnotationView *)[self dequeueReusableAnnotationViewWithIdentifier:AnnotViewID]; 

     if (annotationView == nil) { 
      annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotViewID]; 
     } 
     annotationView.canShowCallout = NO; 

     annotationView.image = [UIImage imageNamed:self.pinImageName]; 
     annotationView.annotation = annotation; 

     return annotationView; 
    } 

ответ

-1

Убедитесь, что для объекта MKMapView установлен MKMapViewDelegate.

Вы можете проверить это?

+0

Становится called.So, что мы можем определить, что от него было установлено – Heena

1

Ваш код не может ничего сказать о том, когда вызывается этот метод делегата, даже под iOS 6 Я бы предположил, что есть случаи, когда это сломается.

Почему бы не просто использовать [annotation PinImage] вместо self.pinImageName? Объект аннотации, переданный в mapView:viewForAnnotation:, является тем же самым, что вы перешли на addAnnotation: выше.

+0

Short, правильно, и до точки. – Anna

0

Я бросаю несколько контактов на карте, где мне нужно отображать разные изображения для всех контактов, для которых я делаю код ниже.

- (void)dropMultiplePinAnnotation:(NSArray *)arrThumbnail 

    { 
     [self removeAnnotations:[self annotations]]; 

     for(Annotation *Annot in arrThumbnail) { 

      self.pinImageName = Annot.PinImage; 
      Annot.coordinate = Detail.coordinate; 
      [self addAnnotation:Annot]; 
     [_mapView setRegion:MKCoordinateRegionMake(Annot.coordinate,  MKCoordinateSpanMake(0.004,0.004))]; 
      //So you can fire every time viewForAnnotation delegate after every annotation adding to MKMapView 
     }  
    } 

- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation 
    { 

    static NSString *AnnotViewID = @"annotViewID"; 
     MKAnnotationView *annotationView = (MKAnnotationView *)[self dequeueReusableAnnotationViewWithIdentifier:AnnotViewID]; 

     if (annotationView == nil) { 
      annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotViewID]; 
     } 
     annotationView.canShowCallout = NO; 

     annotationView.image = [UIImage imageNamed:self.pinImageName]; 
     annotationView.annotation = annotation; 

     return annotationView; 
    } 
Смежные вопросы