在iOS 7和iOS 8中映射MKAnnotationView的问题

时间:2014-11-26 09:11:55

标签: mkmapview mapkit mkannotationview

我使用iOS SDK 8并且在某些位置显示注释时遇到问题,但它在某些地方工作正常。

对于那些失败的位置,它会一直循环if (pinView == nil)并且应用程序会意外退出,是否有根本想法?

 - (void)populateAllLocation {
 self.locations = [selectedCountry_.locations allObjects];

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"latitude != nil &&   longitude != nil"];
 self.locations = [[selectedCountry_.locations filteredSetUsingPredicate:predicate] allObjects];

[mapView_ addAnnotations:locations_];
[self centralizeMap];
}

-(MKAnnotationView *)mapView:(MKMapView *)mapView
        viewForAnnotation:(id<MKAnnotation>)annotation {
if ([annotation isKindOfClass:MKUserLocation.class]) {
static NSString *PinIdentifier = @"UserLocationPin";
MKAnnotationView *pinView =
[mapView_ dequeueReusableAnnotationViewWithIdentifier:PinIdentifier];
if (pinView == nil) {
  pinView =
  [[[MKAnnotationView alloc] initWithAnnotation:annotation
                                reuseIdentifier:PinIdentifier] autorelease];
  pinView.canShowCallout = YES;
  pinView.image = [UIImage imageNamed:@"mylocation_pin"];
}

[self populateAllLocation];

return pinView;
}

1 个答案:

答案 0 :(得分:1)

您的populateAllLocation正在触发注释视图的显示,但委托方法本身会调用populateAllLocation,因此您有一个循环。您应该只在委托中返回注释视图,而不是更改地图。