2013-05-15 3 views
0

Ниже приведен мой код для загрузки моих пользовательских аннотаций в массив, а затем добавление этого массива к моей карте с помощью addAnnotations. Я не получаю никаких контактов на моей карте. Если я заменил [annotations addObject:annotation];[annotations addObject:item.placemark];, я получаю контакты, но они не являются моими аннотациями. У меня есть класс customAnnotation, называемый Annotation. Что я делаю не так?Пользовательские аннотации не загружаются в массив?

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]; 

ответ

1

Проблема, довольно просто, может быть только (а) проблемой добавления аннотаций; или (б) проблема с аннотациями. Сначала я подозревал, что изначально (учитывая ваш странный отступ, я подозревал, что у вас могут возникнуть проблемы с каким-то асинхронным вызовом, с которым вы не делились), но, учитывая, что вы говорите, что он отлично работает, если вы используете метку вместо аннотации, Я должен подозревать, что проблема должна присутствовать в показе аннотаций (а именно viewForAnnotation).

Я бы сначала предложил вам выполнить некоторые диагностические работы. Вы можете проверить, правильно ли добавляются аннотации, зарегистрировав countself.mapView.annotations до и после вызова addAnnotations. Я подозреваю (на основании того, что вы сказали), вы увидите, что счет идет вверх.

Я хотел бы взглянуть на viewForAnnotation и убедиться, что он правильно обрабатывает ваш класс Annotation. Часто у нас есть логика if ([annotation isKindOfClass:...), так что, возможно, у вас есть проблема. Трудно сказать, основываясь на небольшом фрагменте кода, который мы разделяем.

+1

Спасибо за ваш ответ и помогите мне сломать логику проблемы. – Cybernetic

+0

hmmm. Ну, теперь я получаю странное поведение. Когда я внес изменения, я упомянул, что он исправляет проблему аннотации ... но теперь, когда я пытаюсь нажать мою кнопку назад (которая увольняет диспетчер представлений), мое приложение падает. Я получаю EXC_BAD_ACCESS (код = 2, адрес = 0x4). – Cybernetic

+0

@ user1639594 Это, конечно, разочаровывает, но у нас этого недостаточно, чтобы диагностировать, что происходит. Я бы попытался включить [контрольные точки исключения] (http://developer.apple.com/library/mac/#recipes/xcode_help-breakpoint_navigator/articles/adding_an_exception_breakpoint.html) и посмотреть, помогает ли это идентифицировать код нарушения. Если нет, поместите свои собственные контрольные точки в свой код, а затем один шаг через подпрограммы кандидата и посмотрите, можете ли вы определить, какая строка вызывает проблему. Если худшее приходит к худшему, не стесняйтесь загружать проект где-нибудь, и я могу взглянуть. – Rob

Смежные вопросы