为啥我不能让 mapkit 显示自定义注释图钉图像?

Posted

技术标签:

【中文标题】为啥我不能让 mapkit 显示自定义注释图钉图像?【英文标题】:Why can't I get mapkit to display a custom annotation pin image?为什么我不能让 mapkit 显示自定义注释图钉图像? 【发布时间】:2010-06-22 06:14:09 【问题描述】:

我认为使用我自己的自定义图钉图像进行注释会非常简单。

但我一直无法让它工作,我也不知道为什么!

我只是在使用:

Annotation *anno = [[[Annotation alloc] init] autorelease];
        anno.coordinate = ridesMap.userLocation.location.coordinate;
        anno.title = @"Current Location";
        anno.subtitle = [NSString stringWithFormat:@"%f, %f", anno.coordinate.latitude, anno.coordinate.longitude];

        static NSString *defaultPinID = @"LocationIdentifier";
        MKPinAnnotationView *pinView = (MKPinAnnotationView *)[ridesMap dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
        if (pinView == nil)
            pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:anno reuseIdentifier:defaultPinID] autorelease];
        

        pinView.image = [UIImage imageNamed:@"custom_pin.png"];
        pinView.opaque = NO;
        pinView.canShowCallout = YES;
        pinView.draggable = NO;

        pinView.annotation = anno;
        NSLog(@"Adding current location annotation");

        return pinView;

我认为这应该可以工作,因为它需要 UIImage,而且我的项目中确实有 custom_pin.png 文件。

它从不使用我的图像,而只是使用标准的红色别针。我在这里做错了什么?

【问题讨论】:

【参考方案1】:

来自文档:

MKPinAnnotationView 类提供了一个具体的注释视图,该视图显示一个图钉图标,就像地图应用程序中的图钉图标一样。

换句话说,MKPinAnnotationView 将忽略图像属性并始终显示一个图钉。请改用普通的MKAnnotationView

【讨论】:

是的!那成功了。不知道我是怎么错过的!谢谢。 这个答案为我节省了很多时间。不幸的是,SIMULATOR 有一个 BUG,甚至在我使用 MKPinAnnotationView 时,模拟器向我显示了我设置的正确图像,只是设备没有向我显示图像。我疯了,直到我找到了这篇文章。再次感谢。小心,模拟器是你最大的敌人! :-)

以上是关于为啥我不能让 mapkit 显示自定义注释图钉图像?的主要内容,如果未能解决你的问题,请参考以下文章

在 mapkit 中显示自定义注释

iPhone Mapkit 将自定义图像和引脚添加到注释中

使用 Map Kit 平铺注释

可拖动的 MapKit 注释

iOS 如何让 MapKit 显示自定义室内地图?

无法更改图钉 iOS MapKit 的颜色