我目前有一个地图视图,其中有几个对象在MKAnnotation协议之后。有两种不同类型的对象,商店和竞争对手。不同的对象有不同类型的数据附加到他们。MKAnnotationView - MKAnnotation参数警告
加载mapView后,程序会自动将我们的商店和竞争对手的所有针脚放到地图上。每个引脚使用自定义图像。当你缩小到更大的区域时,显然屏幕会变得非常混乱。我在本博客中介绍了基于邻近度过滤对象的方法:http://www.fiveminutes.eu/having-fun-with-ios-map-kit-grouping-annotations/
但是,在与一些同事讨论之后,我们决定尝试改用相对较大的“方形”引脚和较小的针点引脚在地图区域被改变为经度或纬度增量大于1.0之后
我创建了方法并实现了在用户放大和缩小时实现在较小和较大引脚之间切换的过程,但我无法摆脱此警告:
Sending "MKAnnotationView *" to parameter of incompatible type 'id<MKAnnotation>'
我知道这意味着我们可能会做一些可能会导致问题的错误,所以我想在几天之内将它修复到V1.1版本之前。
以下方法是我如何测试以查看我的区域是否已经改变,超出了我想要更改引脚的程度。 usingLargeIcons是一个布尔值,它使得我们在图标已经达到期望的大小时不会调用change方法。
这个方法,你可以看到只是调用两个转换方法。这些方法几乎完全相同,但有两个简单的单词更改小和大。我的目标是获取地图上的所有引脚并将它们转储到阵列中,在阵列中循环切换到较小的引脚。我不明白为什么我们收到关于我们的物体不匹配的警告。如果我在其他问题上错过了这个问题,我很抱歉,请指出我的方向正确,我会继续前进。我有谷歌搜索了几个样式问题,并没有发现任何东西来描述这个对象的警告。
变换方法:
- (void)transformPinsSmall
{
usingLargeIcons = NO;
NSArray *allPins = [mapView annotations];
for (MKAnnotationView *a in allPins) {
//Gets small UIImage for brand, changes pin image
[[mapView viewForAnnotation:a] setImage:[self imageForSmallAnnotation:a]];
}
}
警告后的代码在线路for循环。 “imageForSmallAnnotation”方法只是返回一个UIImage对象。有人请向我解释如何输入这些图像或如何施放我的方法声明,以便我可以删除这些错误?
谢谢。
感谢您的回答,我能够实现您的for循环,并从那里纠正我所有的问题。我尝试了'id a',但我仍然对objective-c很陌生,并没有意识到我需要这两种数据类型。 – Kyle 2012-04-24 21:33:13