iOS MapKit更改mapview maptype会导致注释图像更改为pin吗?

任何有关以下问题的建议都将受到赞赏。

我正在使用以下代码将自定义图像添加到注释中。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation { if ([annotation isMemberOfClass:[MKUserLocation class]]) { return nil; } if ([annotation isMemberOfClass:[SpectatorPin class]]) { SpectatorPin *sp = (SpectatorPin *)annotation; MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"]; if (view == nil) { view = [[[MKPinAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease]; } view.image = [UIImage imageNamed:@"mylocation20x20.png"]; view.canShowCallout = YES; view.annotation=annotation; return view; } //Should not get here return nil; } 

最初正确显示图像。

我有一个段控件,可以更改地图类型(标准,卫星,混合)。 标准是默认值。 一旦我选择卫星,图像立即变为一个引脚。 不再调用mapView:viewforAnnotation方法。

问候,

吉姆

对于自定义图像,您可以使用MKAnnotationView而不是MKPinAnnotationView。

 MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"]; if (view == nil) { view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease]; } 

找到了这个: iPhone核心位置:当地图类型改变时,自定义图钉图像消失

与此相关联: 为什么自定义MKMapView注释图像在触摸时消失?

尝试这个:

 MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"]; if (view == nil) { view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease]; }