微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

缩放时,MKAnnotationView不会停留在原处

如何解决缩放时,MKAnnotationView不会停留在原处

|| 我在iOS的地图上放置了自定义标记,但遇到了一个问题,即当用户捏放大和缩小时,标记无法锚定在应该放置的位置。这是添加标记代码...
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;

    MarkerVO *thisMarker = (MarkerVO*)annotation;

    MKAnnotationView *pin = (MKAnnotationView *) [map dequeueReusableAnnotationViewWithIdentifier:[thisMarker commaSeparatedCoordinate]];
    if (!pin) {
        pin = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:[thisMarker commaSeparatedCoordinate]] autorelease];
        [pin setimage:[UIImage imageNamed:@\"pin_tick.png\"]];
        [pin setCenterOffset:CGPointMake(0,-23)];
        [pin setCanShowCallout:YES];
    }
    return pin;
}
因此,是的,刻度标记显示为ok,但在缩放时,它会四处移动。例如,它可能恰好在近距离放大的地方,但是向外缩小最终会导致它在海中!我知道为什么会发生这种情况,但是即使没有setCenterOffset行,它仍然会发生。 任何想法都很棒。     

解决方法

        当pin从出队中未返回nil时,请尝试将pin.annotation设置为注释。 即使代码似乎为每个注释设置了唯一的标识符,重用的视图也可能以某种方式来自不同的注释(无论如何我都不建议这样做)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。