MKPinAnnotationView では、カスタム イメージを「ピン」として使用し、同時にドラッグを有効にすることはできません。これは、ドラッグを開始するとすぐにイメージがデフォルトのピンに戻るためです。したがって、MKPinAnnotationView の代わりに MKAnnotationView を使用します。
MKPinAnnotationView の代わりに MKAnnotationView を使用すると、カスタム画像が「ピン」として表示されたままになりますが、デフォルトのピンで得られるドラッグ アンド ドロップ アニメーションはサポートされません。
とにかく、私の問題は、カスタム MKAnnotationView をマップ上の新しいポイントにドラッグしてから、マップ自体を移動した後、MKAnnotationView がマップと共に移動しなくなることです。
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
static NSString *defaultID = @"myLocation";
if([self.annotation isKindOfClass:[PinAnnotation class]])
{
//Try to get an unused annotation, similar to uitableviewcells
MKAnnotationView *annotationView = [self.mapView dequeueReusableAnnotationViewWithIdentifier:defaultID];
//If one isn't available, create a new one
if(!annotationView)
{
annotationView = [[MKAnnotationView alloc] initWithAnnotation:self.annotation reuseIdentifier:defaultID];
annotationView.canShowCallout = YES;
annotationView.draggable = YES;
annotationView.enabled = YES;
}
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 32, 32)];
imgView.image = self.passableTag.image;
annotationView.leftCalloutAccessoryView = imgView;
annotationView.image = [UIImage imageNamed:[Constants tagIconImageNameForTagType:self.passableTag.type]];
return annotationView;
}
return nil;
}