Описание: класс, реализующий протокол для работы с источником данных карты Apple.
#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
#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
См. также: