2013-11-14 48 views
0

注释查看气泡大小太小9次满10次。 我打电话[self.mapView selectAnnotation:self.selectedVenue animated:YES];选择一行时显示注释视图。我是否设置了animated:YESNO它仍然显示错误的大小。不过,如果我将地图视图高度的大小增加到200像素,除了地图视图对于3.5英寸屏幕太大,一切看起来都不错。标题和副标题正确MKPinAnnotationView无法正常显示

图片:。https://dl.dropboxusercontent.com/u/5105730/anno.png

以下是我创造我的注解视图

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

if ([annotation isKindOfClass:[FSVenue class]]) { 
    static NSString *PlaceAnnotationIdentifier = @"Place Identifier"; 

    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:PlaceAnnotationIdentifier]; 

    if (annotationView == nil) { 
     annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:PlaceAnnotationIdentifier]; 
    } 

    annotationView.annotation = annotation; 

    UIButton *calloutButton = [UIButton buttonWithType:(UIButtonTypeContactAdd)]; 
    calloutButton.tintColor = self.themeColor; 

    annotationView.enabled = YES; 
    annotationView.pinColor = MKPinAnnotationColorGreen; 
    annotationView.canShowCallout = YES; 
    annotationView.rightCalloutAccessoryView = calloutButton; 
    annotationView.animatesDrop = YES; 

    return annotationView; 
} 

return nil; 

}

回答

0

您必须在添加您的注释之后缩放您的mapview的可视矩形。

[self.yourMapview addAnnotations:self.yourAnnotationsArray]; 
[self zoomToAnnotations]; 

呼叫加入您的注解这样

-(void)zoomToAnnotations{ 

    MKMapRect zoomRect = MKMapRectNull; 

    for (_yourAnnotation in self.yourMapView.annotations) { 
     MKMapPoint annotationPoint = MKMapPointForCoordinate(_yourAnnotation.coordinate); 
     MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1); 
     if (MKMapRectIsNull(zoomRect)) { 
      zoomRect = pointRect; 
     }else{ 
      zoomRect = MKMapRectUnion(zoomRect, pointRect); 
     } 
    } 
    if (zoomRect.size.width == 0.10) /* for single annotation available in map */ 
    { 
     zoomRect = MKMapRectMake(zoomRect.origin.x, zoomRect.origin.y, 100000, 100000); 
    } 

    [[self yourMapView] setVisibleMapRect:zoomRect edgePadding:UIEdgeInsetsMake(50, 50, 50, 50) animated:YES]; 

} 
后,这种方法