Nano Hash - криптовалюты, майнинг, программирование

Как добавить разные заголовки и подзаголовки к разным точкам аннотаций в MapView?

Я показываю разные точки аннотаций в виде карты. Я хочу отображать разные заголовки и субтитры для всех разных аннотаций. У меня есть метод делегата viewForAnnotation, реализованный следующим образом.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;
{
    NSLog(@"annotation Class %@", [annotation class]);

if ([annotation isKindOfClass:[HGMovingAnnotation class]]) {

    static NSString *kMovingAnnotationViewId = @"HGMovingAnnotationView";

    HGMovingAnnotationView *annotationView = (HGMovingAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:kMovingAnnotationViewId];

    if (!annotationView) {
        annotationView = [[HGMovingAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:kMovingAnnotationViewId];
    }

    //configure the annotation view
    annotationView.image = [UIImage imageNamed:@"symbol-moving-annotation.png"];

    annotationView.bounds = CGRectMake(0, 0, 20, 20); //initial bounds (default)
    annotationView.mapView = mapView;

    NSLog(@"Inside Moving Annotation");
    return annotationView;
}

static NSString *kCustomAnnotationView = @"CustomAnnotationView";

MKPinAnnotationView* customPinView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:kCustomAnnotationView];

if ([annotation isKindOfClass:[CLLocation class]]) {
    MKAnnotationView *customAnnotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation
                                                                          reuseIdentifier:kCustomAnnotationView];
    customAnnotationView.image = [UIImage imageNamed:@"customAnnotation"];

    customAnnotationView.canShowCallout = NO;
    customAnnotationView.centerOffset = CGPointMake(2,-12);
    NSLog(@"Inside Custom Annotation1");
    return customAnnotationView;
} else {
    customPinView.annotation = annotation;
    customPinView.pinColor = MKPinAnnotationColorPurple;
    NSLog(@"Inside Custom Annotation2");
    return customPinView;
}

}

Я хочу отобразить заголовок и подзаголовок для аннотаций customPinView. Пожалуйста помогите.


Ответы:


1

Аннотации не имеют заголовка или подзаголовка. Вам нужно создать подкласс MKAnnotation и установить (под)заголовок в пользовательской аннотации. Метод viewForAnnotation не подходит для этого, вы должны вызывать [annotation setTitle:@"my title"] прямо перед [mapView addAnnotation:annotation].

Образец кода:

@interface MyCustomAnnotation : NSObject <MKAnnotation> {

@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic) CLLocationCoordinate2D coordinate;

@end
08.10.2012

2

Я попробовал подход, предложенный phix23, и пришел со следующим кодом. Оно работает..

titleArray = [[NSArray alloc]initWithObjects:@"First Point",@"Second Point",@"Third Point",@"Fourth Point",@"Fifth Point", nil];
subTitleArray = [[NSArray alloc]initWithObjects:@"Restaurant",@"Park",@"Hotel",@"Theatre",@"AmusementPark", nil];

NSInteger customAnnotationCount = annotations.count;

//CLLocationCoordinate2D coordinates[customAnnotationCount];

for (NSInteger index = 0; index < customAnnotationCount; index++) {

    CLLocation *location = [annotations objectAtIndex:index];
    NSString *titleString = [titleArray objectAtIndex:index];
    NSString *subTitleString = [subTitleArray objectAtIndex:index];
    CLLocationCoordinate2D coordinate = location.coordinate;
    //coordinates[index] = coordinate;
    CustomAnnotations *customAnnotation = [[CustomAnnotations alloc]initWithCoordinates:coordinate placeName:titleString description:subTitleString];
    [_mapView addAnnotation:customAnnotation];
    [customAnnotation release];
}

«аннотации» — это массив, содержащий точки местоположения. _mapView — это мой MKMapView. CustomAnnotations — это класс NSObject, реализующий протокол MKAnnotation так же, как описано выше.

09.10.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..