Отображение трёхмерной карты

Требования к операционной системе: 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

См. также:

Примеры использования компонентов