同様の質問への回答で、ユーザーは次のことを行うように言いました。
これを修正するには、viewForAnnotation メソッドで次のことを行います。
// iOS6 BUG WORKAROUND !!!!!!!
if (is6orMore) {
[annotationView setTransform:CGAffineTransformMakeRotation(.001)]; //any small positive rotation
}
このコードをいたるところに配置しようとしましたが、マップがパンされたときに注釈が回転します。これが私のコードです。
マップが回転するたびにこのメソッドを呼び出します
-(void)rotateAnnotations {
for (id<MKAnnotation> annotation in self.mapView.annotations)
{
MKAnnotationView* annotationView = [self.mapView viewForAnnotation:annotation];
[annotationView setTransform:CGAffineTransformMakeRotation(- self.mapRotationRadians)];
if ([annotation isKindOfClass:[FlagAnnotation class]]) {
[annotationView setSelected:YES animated:NO];
}
[annotationView setNeedsDisplay]; //ios6
}
}
元の回答では、バグ回避コードを viewForAnnotation メソッドに入れると言っていました。これがそのコードです。
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
if ([annotation isKindOfClass:[FlagAnnotation class]]) {
// once flag is set allow for doubleTap zoom
[self.mapView addGestureRecognizer:doubleTap];
static NSString *AnnotationViewID = @"annotationViewID";
MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
if (!annotationView)
{
annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];
annotationView.image = [UIImage imageNamed:@"FlagRed"];
annotationView.draggable = YES;
[self updateFlagCoordinate:(MKPlacemark *)annotationView.annotation];
return annotationView;
}
else {
[self updateFlagCoordinate:(MKPlacemark *)annotationView.annotation];
annotationView.annotation = annotation;
}
// iOS6 BUG WORKAROUND !!!!!!!
if (osVersion() >= 6) {
[annotationView setTransform:CGAffineTransformMakeRotation(.001)];
}
return annotationView;
}
return nil;
}
よろしくお願いします。
ありがとう、マット