Реализация протокола для работы с источником данных карты Apple

Описание: класс, реализующий протокол для работы с источником данных карты Apple.

Файл «MAMapDataBubbleViewController.h»

#import <Foundation/Foundation.h>
#import <MobileAnalysis/MAMapDataBubbleViewController.h>
#import "MapDataViewDatasource.h"
#import <MobileAnalysis/MobileClientMapDataSource.h>
@interface CustomMapDataBubbleViewController : MAMapDataBubbleViewController {
    MapDataViewDatasource *m_mapDataSource; // Источник данных карты
    NSNumber *m_metricDimension; // Измерение метрик
    NSNumber *m_metric; // Метрика источника данных
    NSNumber *m_metricNoPivot; // Метрика, которой не соответствует таблица данных
}
// Возвращает наименование метрики, которой не соответствует таблица данных
-(NSString *)metricNoPivotName;
@end

Файл «MAMapDataBubbleViewController.mm»

#import "CustomMapDataBubbleViewController.h"
#import <MobileAnalysis/MapShape.h>
@implementation CustomMapDataBubbleViewController
-(id)init {
    m_mapDataSource = [self mapDatasource];
    return self;
}
// Обновляет данные источника
- (void)refresh {
    MapDataViewDatasource *dataSource = [self mapDatasource];
    [dataSource updateData];
    NSLog(@"Данные обновлены");
}
// Устанавливает метрику, которой не соответствует таблица данных
- (void)setMetricNoPivot:(NSNumber *)metric {
    m_metricNoPivot = metric;
}
// Возвращает наименование метрики, которой не соответствует таблица данных
-(NSString *)metricNoPivotName {
    [self setMetric: m_metricNoPivot];
    NSString *metricName = [self metricsName];
    return metricName;
}
// Устанавливает ключ метрики источника данных
-(void)setMetric:(NSNumber *)metric {
    m_metric = metric;
}
// Возвращает ключ метрики источника данных
-(NSNumber *) metric {
    return m_metric;
}
// Возвращает наименование метрики
-(NSString *)metricsName {
    // Получаем справочник метрик источника данных
    NSDictionary *metrics = [self metrics];
    NSString *metricName = [metrics valueForKey: [[self metric] stringValue]];
    return metricName;
}
// Возвращает справочник метрик источника данных
-(NSDictionary *)metrics {
    NSDictionary *metrics;
    MapDataViewDatasource *dataSource = [self mapDatasource];
    NSArray *values = @[[dataSource colorMetricName],
    [dataSource sizeMetricName],
    [dataSource heightMetricName]];
    NSArray *keys = @[[NSString stringWithFormat: @"%lld", [dataSource colorMetricKey]],
    [NSString stringWithFormat: @"%lld", [dataSource sizeMetricKey]],
    [NSString stringWithFormat: @"%lld", [dataSource heightMetricKey]]];
    metrics = [NSDictionary dictionaryWithObjects:values forKeys: keys];
    return metrics;
}
// Возвращает ключ измерения метрик
-(NSNumber *)metricDimension {
    return m_metricDimension;
}
// Устанавливает ключ измерения метрик
-(void)setMetricDimension:(NSNumber *)metricDimension {
    m_metricDimension = metricDimension;
}
// Возвращает справочник ключей измерения метрик
-(NSDictionary *)metricDimensions {
    MapDataViewDatasource *dataSource = [self mapDatasource];
    return [dataSource metricsDimensionsKeys];
}
// Возвращает массив идентификаторов пузырьков на карте
- (MapShape *)shapeWithID:(NSString *)ID {
    // Создаём область слоя карты
    MapShape *mapShape = [[MapShape new] autorelease];
    [mapShape setID: ID];
    [mapShape setBackground: [self brushWithID: ID]];
    return mapShape;
}
@end

См. также:

Работа с источником данных карты Apple