在MKMapView中更改MKMapType并为注释保留自定义pinImage

我为我的注释设置了自定义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时它正确处理它。 如果您只想让他们做针脚,那么不要对呼叫做任何事情。 呃,好吧。