9

任何关于以下问题的建议将不胜感激。

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

- (MKAnnotationView *)mapView:(MKMapView *)mapView 
            viewForAnnotation:(id <MKAnnotation>)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 方法不再被调用。

问候,

吉姆

4

3 回答 3

24

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

MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"];
        if (view == nil) {
            view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease];
        }
于 2011-06-24T03:50:32.833 回答
1

发现这个: iPhone核心位置:地图类型更改时自定义图钉图像消失

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

于 2011-03-30T00:46:20.843 回答
1

试试这个:

MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"];
        if (view == nil) {
            view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease];
        }
于 2015-01-09T04:18:53.150 回答