我正在 iOS 中的 map 上放置自定义标记,但遇到了一个问题,即当用户捏合放大和缩小时,标记不会锚定到应有的位置。这是添加标记的代码...
- (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 线,它仍然会发生。
任何想法都会很棒。
最佳答案
当 pin 未从出队返回 nil 时,尝试将 pin.annotation 设置为注释。
重用的 View 可能以某种方式来自不同的注释,即使代码似乎为每个注释设置了唯一的标识符(我在任何情况下都不推荐这样做)。
关于objective-c - MKAnnotationView 缩放时不会保持在原位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168753/