0

下面是我的代码,用于将我的自定义注释加载到一个数组中,然后使用 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];
4

1 回答 1

1

问题很简单,只能是(a)添加注释的问题;或 (b) 显示注释的问题。我最初怀疑是前者(考虑到你奇怪的缩进,我怀疑你可能对一些你没有与我们分享的异步调用有问题),但鉴于你说如果你使用地标而不是注释它工作正常,我不得不怀疑问题必须在于注释的显示(即viewForAnnotation)。

我首先建议你做一些诊断工作。您可以通过记录调用前后count的来确认注释是否被正确添加。我怀疑(根据你所说的)你会看到计数上升。self.mapView.annotationsaddAnnotations

然后我会看一下viewForAnnotation,并确保它Annotation正确处理您的课程。我们经常有if ([annotation isKindOfClass:...)逻辑,所以也许你有一些问题。根据与我们分享的一小段代码,很难说。

于 2013-05-15T13:58:15.337 回答