Требования к операционной системе: 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, из-за чего воспроизведение анимации будет не завершено:

См. также: