我为注释设置了一个自定义的pinImage,当我将类型更改为MKMapTypeHybrid时,它将pinImage设置恢复为标准图钉。

我在地图视图控制器的viewWillAppear方法中设置mapType。我将我的pinImage设置为这样的注解(为清楚起见已缩短):

- (MKAnnotationView *) mapView:(MKMapView *) mapView viewForAnnotation:(id ) annotation {

    MKPinAnnotationView *customAnnotationView=[[[MKPinAnnotationView alloc]
                                            initWithAnnotation:annotation
                                            reuseIdentifier:@"markerAnnotationView"] autorelease];
    UIImage *pinImage = [UIImage imageNamed:@"/pin-image"];
    [customAnnotationView setImage:pinImage];
    return customAnnotationView;
}

有什么方法可以使用setImage并通过代码设置mapType吗?

最佳答案

解决此问题的方法是使用MKAnnotationView而不是MKPinAnnotationView。我以前一直有使用MKPinAnnotationView的充分理由,但后来在不将实例化类更改为MKAnnotationView的情况下将自定义图像添加到了引脚。

现在,我认为这可能是错误的框架行为。如果要让MKPinAnnotationView接受setImage调用,请确保在更改mapTypes时它能够正确处理。如果您只想让他们做别针,则对呼叫不做任何事情。呃,好吧。

10-08 18:52