gpt4 book ai didi

ios - 拖动我的 MKAnnotationView 后拖动 map 不会随之移动 MKAnnotationView

转载 作者:可可西里 更新时间:2023-11-01 03:05:16 29 4
gpt4 key购买 nike

MKPinAnnotationView 不允许您使用自定义图像作为“图钉”并同时启用拖动,因为一旦您开始拖动图像就会变回默认图钉。因此,我使用 MKAnnotationView 而不是 MKPinAnnotationView。

虽然使用 MKAnnotationView 而不是 MKPinAnnotationView 确实会将您的自定义图像显示为您的“图钉”,但它不支持您使用默认图钉获得的拖放动画。

无论如何,我的问题是,在我将自定义 MKAnnotationView 拖到 map 上的一个新点然后移动 map 本身之后,MKAnnotationView 不再随 map 移动。

-(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;
}

最佳答案

只需在结束拖动后将 annotationView.dragState 设置为 MKAnnotationViewDragStateNone 即可:

    - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState {
if ([view.annotation isKindOfClass:[PinAnnotation class]]) {
if (newState == MKAnnotationViewDragStateEnding) {
view.dragState = MKAnnotationViewDragStateNone;
}
}
}

关于ios - 拖动我的 MKAnnotationView 后拖动 map 不会随之移动 MKAnnotationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18933632/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com