Как добавить изображение для каждой настраиваемой аннотации в 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; } 
  • Не удается получить доступ к AppDelegate при тестировании проекта Xcode
  • Xcode 4 продолжает сбой
  • Mutliple быстрой поддержки dylib в архивированном пакете ipa
  • DYLD_PRINT_STATISTICS не показывает ничего
  • Приложение Delphi XE2 не отвечает на IPAD
  • Как загружать фотографии из фотогалереи и хранить ее в проекте приложения?
  • Сохранение местоположения iPhone после запуска приложения из Xcode с помощью моделирования местоположения
  • purgeIdleCellConnections: обнаружено, что для чистки conn = 0x1ddde360
  • Установите приложения iOS на устройство без программы разработчика, iOS 5.1
  • Приостановка таймера, когда приложение находится в фоновом состоянии Swift
  • UIAlertView в iOS7 блокирует отображение при увольнении
  • Interesting Posts

    Как я могу отсортировать результат icloud NSMetadataQuery из UIDocument по дате изменения?

    Установить выбранную ячейку по умолчанию в UITableViewController

    Xcode 6 Beta 4: Использование неразрешенного идентификатора 'NSFetchedResultsChangeInsert'

    Как возобновить AVAudioPlayer после прерванного в фоновом режиме

    Объектива-C Wrapper для CFunctionPointer для быстрого закрытия

    Почему устройства iOS имеют как UDID, так и серийный номер?

    Подождите, пока popToRootViewControllerAnimated: ДА анимация выполнена

    Возможно ли создать приложение для iPhone с помощью MonoTouch с помощью Microsoft EWS?

    SQLite – лучший просмотрщик на Mac?

    Раскадровка iOS MBProgressHUD

    Как выбрать командную строку профиля предоставления iOS при использовании Qmake для сборки

    Использование Unity3D в одном из представлений приложения iOS

    Получение неправильного разрешения экрана для IPAD Air

    Срок действия контракта iAd истек? Не так, говорит iTunesConnect. Модуль iAd думает иначе

    Подождите, пока асинхронная операция завершится в Swift

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.