0

10 回中 9 回、annotationView のバブル サイズが小さすぎます。[self.mapView selectAnnotation:self.selectedVenue animated:YES];行を選択するときに注釈ビューを表示するために呼び出します。animated: YES設定したかどうかにかかわらずNO、間違ったサイズが表示されます。ただし、マップ ビューの高さのサイズを少なくとも 200 ピクセルに増やすと、マップ ビューが 3.5 インチの画面には大きすぎることを除いて、すべてが正常に表示されます。

タイトルとサブタイトルを正しくカバーするために、マップ ビューをこのサイズにして注釈バブルにしたいと考えています。

画像: 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;

}

4

1 に答える 1

0

このように注釈を追加した後、マップビューの可視四角形をズームする必要があります。

[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];

}
于 2013-11-14T15:04:37.237 に答える