本文介绍了iOS MapKit更改mapview maptype会导致注释图像更改为pin吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Any suggestions on what is wrong with the following would be appreciated.

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

I am adding a custom image to an annotation using the following code.

- (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方法。

I have a segment control which changes the map type (standard, satellite, hybrid). Standard is the default. As soon as I select satellite the image immediately changes to a pin. The mapView:viewforAnnotation method is not called again.

问候,

Jim

推荐答案

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

For custom image, you might use MKAnnotationView instead of MKPinAnnotationView.

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

这篇关于iOS MapKit更改mapview maptype会导致注释图像更改为pin吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 09:09