цель программирования iphone-c: проблема с выводом mkannotation

#iphone #map #gps #mkannotation

#iPhone #словарь #gps #mkannotation

Вопрос:

я попытался сделать пользовательский вывод на карте зеленым цветом и кнопкой. но это не работает. У меня есть класс с именем Placemark, который реализует протокол mkannotation. Это мой метод, который должен показывать зеленый вывод, но это не так:

 - (MKAnnotationView *) map:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>) annotation{
    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
    annView.pinColor = MKPinAnnotationColorGreen;
    annView.animatesDrop=TRUE;
    annView.canShowCallout = YES;
    annView.calloutOffset = CGPointMake(-5, 5);
    return annView;
}
  

я также хочу указать, что мой MKMapView называется «map» и его IBOutlet.

Спасибо

Комментарии:

1. Можете ли вы опубликовать код, с помощью которого вы добавляете аннотации к представлению карты addAnnotations: ?

Ответ №1:

Имя метода должно быть mapView:viewForAnnotation: . Вид карты выглядит специально для этого имени. Вы можете изменить имена переменных внутреннего параметра, но не части перед двоеточиями.

Попробуйте это:

 - (MKAnnotationView *) mapView:(MKMapView *)map 
                            viewForAnnotation:(id <MKAnnotation>) annotation
  

Из-за этой орфографической ошибки просмотр карты не вызывает ваш метод viewForAnnotation и, должно быть, на карту наносится красный вывод по умолчанию.

Комментарии:

1. ну, я сделал это, но он больше не вводит метод

2. Вы имеете в виду, что он по-прежнему не вызывает метод? Убедитесь, что делегат просмотра карты подключен в IB.

3. Помимо использования правильного имени метода и проверки того, установлен ли делегат, следующим, что нужно проверить, действительно ли аннотация добавляется в массив аннотаций в режиме просмотра карты. После строки addAnnotation запишите количество в массиве аннотаций (или просто запишите весь массив). Вы видите, что аннотация добавляется в массив? В противном случае опубликуйте код, который создает метку и вызывает addAnnotation. Я посмотрю на это, когда снова буду в Сети, или кто-то другой, возможно, тоже сможет помочь до этого.