Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере отображается представление данных в виде трёхмерной карты, а также выполняются следующие операции:
устанавливается топооснова карты;
определяется количество закрашенных элементов карты;
возвращается справочник ключей измерения метрик;
устанавливается новая настройка карты - расчёт индикатора объёма карты производится по шкале.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение аналитической панели») следующий код:
// Получаем контроллер для работы с аналитической панелью
MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
// Получаем делегат для работы с экспресс-отчётом
EAReportDelegateImpl *delegate = [contr delegate];
// Получаем источник данных карты
MapDataViewDatasource *dataSource = (MapDataViewDatasource *)[delegate mapDatasource];
// Получаем топооснову карты
NSData *topobase = [delegate mapTopobase];
// Создаём контейнер для карты
MAMapDataViewContainerController *mapContainer = [MAMapDataViewContainerController new];
// Создаём трёхмерную карту
MAMapData3DViewController *map3DViewController = [[MAMapData3DViewController alloc] initWithDatasource: nil];
// Устанавливаем источник данных карты
[map3DViewController setMapDatasource: dataSource];
// Устанавливаем данные топоосновы
[map3DViewController setTopobaseWithData:topobase];
// Устанавливаем делегат для работы с трёхмерной картой
[map3DViewController setDelegate: mapContainer];
// Указываем, что загружается карта
[map3DViewController setTag: kViewModeMap];
[mapContainer setMainViewController: map3DViewController];
// Устанавливаем делегат для работы с контейнером карты
[mapContainer setDelegate: contr];
// Указываем, что загружается контейнер с картой
[mapContainer setTag: kViewModeMap];
// Определяем настройки карты
NSMutableDictionary *mapSettings = [NSMutableDictionary dictionary];
// Расчёт индикатора объёма будем производить по шкале
[mapSettings setValue:kMapDepthModeScale forKey:kMapDepthMode];
// Устанавливаем настройки карты
[map3DViewController setSettings: mapSettings];
// Создаём карту Apple
MAMapDataBubbleViewController *bubbleViewController = [[MAMapDataBubbleViewController alloc] initWithDatasource:(MapDataViewDatasource *)delegate.mapDatasource];
// Устанавливаем делегат для работы с картой Apple
[bubbleViewController setDelegate: mapContainer];
[bubbleViewController setTag: kViewModeMap];
// Устанавливаем данные топоосновы
[bubbleViewController setTopobaseWithData:delegate.mapBubbleTopobase];
[mapContainer setBubbleViewController: bubbleViewController];
BOOL isDepthEnable = [MAMapData3DViewController depthEnableState];
if (isDepthEnable) {
NSLog(@"Доступны настройки высоты областей слоя карты");
} else {
NSLog(@"Настройки высоты областей слоя карты недоступны");
}
// Устанавливаем закрашенные элементы карты
[map3DViewController setStrokedShapes: [[mapContainer bubbleViewController] strokedShapes]];
NSLog(@"Количество закрашенных элементов карты: %d", [[map3DViewController strokedShapes] count]);
// Удаляем все дочерние представления окна
NSArray *subviews = [self.parentViewController.view subviews];
for (UIView *subView in subviews) {
[subView removeFromSuperview];
}
// Отображаем представление контроллера
[self.parentViewController.view addSubview: [map3DViewController view]];
В результате выполнения примера было отображено представление данных в виде трёхмерной карты:

В консоли среды разработки было выведено уведомление о том, настройки высоты областей слоя карты не определены, а также количество закрашенных элементов карты:
Количество закрашенных элементов карты: 1
См. также: