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]; }