下面是我的代码,用于将自定义注释加载到数组中,然后使用addAnnotations将此数组添加到我的地图中。我的地图上没有任何针脚。如果我将[annotations addObject:annotation];
替换为[annotations addObject:item.placemark];
我会获得别针,但它们不是我的自定义注释。我有一个名为Annotation的customAnnotation类。我做错了什么?
NSMutableArray *annotations = [NSMutableArray array];
[response.mapItems enumerateObjectsUsingBlock:^(MKMapItem *item, NSUInteger idx, BOOL *stop) {
// if we already have an annotation for this MKMapItem,
// just return because you don't have to add it again
for (id<MKAnnotation>annotation in mapView.annotations)
{
if (annotation.coordinate.latitude == item.placemark.coordinate.latitude &&
annotation.coordinate.longitude == item.placemark.coordinate.longitude)
{
return;
}
}
// otherwise add it
Annotation *annotation = [[Annotation alloc] initWithPlacemark:item.placemark];
annotation.title = mapItem.name;
annotation.subtitle = mapItem.placemark.addressDictionary[(NSString *)kABPersonAddressStreetKey];
[annotations addObject:annotation];
[self.mapView addAnnotations:annotations];
答案 0 :(得分:1)
问题很简单,只能是(a)添加注释的问题;或(b)显示注释的问题。我最初怀疑前者(考虑到你的怪异缩进,我怀疑你可能会遇到一些你没有与我们分享的异步调用的问题),但考虑到你说如果使用地标代替注释它可以正常工作,我不得不怀疑问题必须在注释的显示中(即viewForAnnotation
)。
我首先建议你做一些诊断工作。您可以在count
来电之前和之后记录self.mapView.annotations
的{{1}}来确认是否正确添加了注释。我怀疑(基于你所说的),你会看到计数上升。
然后我会查看addAnnotations
,并确保它正确处理您的viewForAnnotation
课程。我们经常有Annotation
逻辑,所以也许你有一些问题。根据与我们分享的一小段代码很难说。