Использование родительских и дочерних слоев карты

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере реализовано выполнение следующих операций:

Исходный код

Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Создание карты с временной шкалой») следующий код:

// Получаем объект для работы со слоем карты
MapLayer *layer = [[m_view layers] objectAtIndex:0];
// Устанавливаем индекс временной оси для всех визуальных элементов слоя
[layer setIndexForVisuals: 3];
// Перебираем в цикле все дочерние слои
for(MapLayer *currentSubLayer in [layer subLayers])
{
    // Осуществляем поиск по массиву областей
    for(MapShape *shape in [currentSubLayer shapes])
    {
        // Сравниваем идентификатор текущей области с заданным
        if([shape.ID isEqual:@"RU"] == YES)
        {
            // Устанавливаем цвет и толщину границы родительского слоя
            [[currentSubLayer parentLayer] setStrokeColor:[UIColor grayColor]];
            [[currentSubLayer parentLayer] setStrokeThickness: 1.0];
            // Отображаем в заданной области всплывающую подсказку
            [m_view showPopupInShape:shape];
            // Получаем объект для работы со всплывающей подсказкой
            MapTooltip *tooltip = [shape tooltip];
            // Устанавливаем цвет границы всплывающей подсказки
            [tooltip setBorderColor:[UIColor blackColor]];
            break;
        }
    }
}

Также необходимо заменить содержимое метода  mapChart:touchDownInShape: класса ViewController (см. раздел «Создание карты с временной шкалой») на следующий код:

// Проверяем, скрыта ли легенда
if([[m_view legend] optimizedOut] == YES)
{
    // Устанавливаем параметры положения легенды
    [[m_view legend] setOrientation: NWLegendOrientationFreeFloat];
    // Определяем точку, задающую позицию легенды
    CGPoint legendOrigin = {0, 260};
    // Устанавливаем позицию легенды
    [[m_view legend] setOrigin:legendOrigin];
    // Задаем количество столбцов легенды
    [[m_view legend] setColumnCount:1];
    // Скрываем верхний заголовок легенды
    [[[m_view legend] header] setVisibility:NO];
    // Применяем новые параметры легенды
    [m_view alignLegend];
    // Отображаем легенду
    [[m_view legend] setOptimizedOut:NO];
    // Отображаем временную ось
    [[m_view timeAxis] setVisible:YES];
    // Устанавливаем дробное значение индекса временной оси
    [[m_view timeAxis] setDoubleIndex:2.95];
}
else
{
    // Скрываем легенду
    [[m_view legend] setOptimizedOut:YES];
    // Скрываем временную ось
    [[m_view timeAxis] setVisible:NO];
}

В результате выполнения примера для всех областей корневого слоя карты показаны границы серого цвета толщиной, равной 1 пикселю.  Для области слоя карты с идентификатором «RU» была отображена всплывающая подсказка, в которой выведено значение за 2003 год, что соответствует индексу 3:

Затем вручную нажмём на любую область слоя карты. В результате легенда и временная ось будут скрыты:

Нажмём еще раз на любую область слоя карты. В результате  этого легенда карты будет снова отображена со скрытым заголовком. Горизонтальная координата левого верхнего угла легенды станет равна 0 пикселям, а вертикальная координата станет равна 260 пикселям. Количество столбцов легенды станет равно 1. Также будет отображена временная ось карты. Значение индекса оси станет равно 2.95, из-за чего воспроизведение анимации будет не завершено:

См. также:

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