放大/缩小地图时,MKMapView自定义图钉图像会失去准确性

时间:2014-06-18 03:09:06

标签: ios cocoa-touch mkmapview

我的应用程序中有一个mapView,我正在使用我自己的图像作为引脚图像的MKAnnotationView。这是我设置它的代码。

-(RMAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(RentPin *)annotation{

    static NSString *identifier = @"MyLocation";

    if ([annotation isKindOfClass:[RentPin class]]) {
        RMAnnotationView *annotationView = (RMAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

        if(annotationView == nil){
            annotationView = [[RMAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
            annotationView.enabled = YES;
            annotationView.canShowCallout = NO;
            annotationView.image = [UIImage imageNamed:@"home44.png"];
            annotationView.centerOffset = CGPointMake(-10, -10);
        }else{
            annotationView.annotation = annotation;
        }

        return annotationView;
    }
    return nil;
}

工作正常,自定义图像也正常显示,但是当我捏合mapView以放大/缩小地图时,我注意到自定义图像在地图上失去了准确性。请看下面的图片。

https://www.dropbox.com/s/irrgmohppf08fzr/image1.png 此图像显示引脚处于此位置,这非常准确。

https://www.dropbox.com/s/vvlr4ckk6molqd7/image2.png 在缩小mapView之后,针脚穿过街道并显示该地址在湖中....

(对不起链接,因为由于声誉不足而无法发布图片。)

有人可以帮我这个吗?我的图像是44x44,我也尝试设置引脚的centerOffset,它无法在所有缩放级别动态解决这个问题。

1 个答案:

答案 0 :(得分:5)

这只是错误的中心偏移。但请注意,中心偏移取决于您使用的注释视图的类型。我不知道RMAnnotationView是什么。如果它是MKAnnotationView的子类,则centerOffset应为CGPointMake(0, -imageHeight / 2)