#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. Я посмотрю на это, когда снова буду в Сети, или кто-то другой, возможно, тоже сможет помочь до этого.