缩放时,MKAnnotationView不会保持原位

时间:2011-05-29 16:01:48

标签: objective-c ios mapkit 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;
}

所以是的,刻度线标记显示正常,但在缩放时,它只是四处移动。例如,它可能是在近距离变焦的现场,但缩放出路最终会在海中!我知道为什么会这样,但即使没有setCenterOffset线,它仍然会发生。

任何想法都会很棒。

1 个答案:

答案 0 :(得分:1)

如果引脚未从出队返回nil,请尝试将pin.annotation设置为注释。

重复使用的视图可能会以某种方式来自不同的注释,即使代码似乎为每个注释设置了唯一的标识符(在任何情况下我都不建议这样做)。