Как добавить изображение для каждой настраиваемой аннотации в MapView?

У меня есть класс Picture который содержит latitude и longitude и image каждого местоположения. Я хочу добавить их в качестве аннотации к MapView и показать свое изображение вместо вывода для этих местоположений.

У меня есть индивидуальная аннотация, которая:

 @interface Annotation : MKAnnotationView <MKAnnotation> @property (nonatomic,assign) CLLocationCoordinate2D coordinate; @property (nonatomic,copy) NSString *title; @property (nonatomic,copy) NSString *subtitle; @property (nonatomic,retain) UIImage *image; @end 

А также

 @implementation Annotation @synthesize title,subtitle,coordinate,image; @end 

Теперь в главном коде я пытаюсь:

 CLLocationCoordinate2D location; Annotation *myAnn; for(Pictures *pic in picturesFromDB) { myAnn = [[Annotation alloc] init]; location.latitude = [pic.langT doubleValue]; location.longitude = [pic.longT doubleValue]; myAnn.coordinate = location; myAnn.title = pic.descript; myAnn.image = [UIImage imageWithData:pic.image]; //Not sure about this line! [self.mapView addAnnotation:myAnn]; 

}

Мне все еще нужен делегат и я должен назвать «viewForAnnotation»? Поскольку это не сработало, я сделал это для делегата:

 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { // If it's the user location, just return nil. if ([annotation isKindOfClass:[MKUserLocation class]]) return nil; // Handle any custom annotations. if ([annotation isKindOfClass:[Annotation class]]) { // Try to dequeue an existing pin view first. MKAnnotationView *pinView = (MKAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@"CustomPinAnnotationView"]; if (!pinView) { // If an existing pin view was not available, create one. pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"]; //pinView.animatesDrop = YES; pinView.canShowCallout = YES; pinView.image = [UIImage imageNamed:@"image.png"]; pinView.calloutOffset = CGPointMake(0, 4); } else { pinView.annotation = annotation; } return pinView; } return nil; } 

Это прекрасно работает, но добавляет одно и то же изображение во все местоположения. Но у меня есть конкретное изображение, чтобы показывать вместо image.png выше для каждого местоположения.

Номер места является переменным, а также динамическим.

Как передать этот образ делегату. Я попытался найти поле изображения в переданной аннотации, но его не существует! Я ценю любое предложение.

One Solution collect form web for “Как добавить изображение для каждой настраиваемой аннотации в MapView?”

Вам нужно передать аннотацию в свой собственный класс, чтобы вы могли получить доступ к его свойствам –

 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { // Handle any custom annotations. if ([annotation isKindOfClass:[Annotation class]]) { Annotation *myAnn=(Annotation *)annotation; // Try to dequeue an existing pin view first. MKAnnotationView *pinView = (MKAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@"CustomPinAnnotationView"]; if (!pinView) { // If an existing pin view was not available, create one. pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"]; //pinView.animatesDrop = YES; pinView.canShowCallout = YES; pinView.calloutOffset = CGPointMake(0, 4); } else { pinView.annotation = annotation; } pinView.image = myAnn.image; return pinView; } return nil; } 
  • Предупреждение раскадровки: атрибут первого базового макета перед iOS 8.0
  • Включить iCloud в проекте Xcode через скрипт
  • Ошибка сборки Xcode 7 из-за ld: библиотека не найдена для -lGoogleAnalyticsServices
  • Есть ли способ в xcode 4 перечислить все функции делегата и автоматически добавить фрагмент кода в файл?
  • Регистрация UncaughtExceptionHandler в Objective C с использованием NSSetUncaughtExceptionHandler
  • Попытка сохранить собственность «в пределах своей собственной воли»
  • Неподдерживаемый компилятор 'GCC 4.2', выбранный для архитектуры 'armv7'
  • Обновление Xcode после перехода на автономное приложение
  • Ошибка: системный файл был изменен, так как был создан предварительно скомпилированный заголовок
  • Xcode 7 ValidateEmbeddedBinary error Не удалось прочитать данные в файле foo-WatchKit-App.app
  • Xcode 9 - добавление значка в App Store
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.