Работа с областью карты

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

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

Описание

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

Исходный код

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

// Сравниваем идентификатор выбранной области с заданным
if([shape.ID isEqual:@"RU"] == YES)
{
    // Создаем объект для работы со всплывающей подсказкой
    MapTooltip *tooltip = [MapTooltip new];
    // Задаем текст подсказки
    tooltip.text =@"Новая Земля";
    // Задаем цвет границы подсказки
    tooltip.borderColor = [UIColor blackColor];
    // Задаем всплывающую подсказку родительскому слою
    [[shape parentLayer] setTooltip:tooltip];
    // Передаем всплывающую подсказку родительского слоя области
    [shape setTooltip:[[shape parentLayer] tooltip]];
    // Получаем массив визуальных элементов области
    NSArray *visuals = [shape visuals];
    // Перебираем в цикле визуальные элементы
    for(MapAreaVisual *visual in visuals)
    {
        /* Устанавливаем признак того, что параметры заливки фона областей карты
        не зависят от источника данных */
        [[visual background] setIsDependent:NO];
        /* Задаем параметры заливки визуального элемента,
        используемые при отсутствии привязки к шкале */
        [[visual background] setValue:[SolidColorBrush solidColorBrushWithColor:[UIColor colorWithHex:@"86b7fb"]]];
        // Перерисовываем карту
        [m_view invalidate];
    }
    // Получаем название области
    NSString *title = [shape title];
    // Получаем центральную точку области, извлеченную из атрибутов платформы
    CGPoint centerPoint = [shape centerPoint];
    // Получаем географические координаты центра области
    CLLocationCoordinate2D centerPointCoordinate = [shape centerPointCoordinate];
    // Выводим в консоль среды разработки полученные значения
    NSLog(@"Название области: %@",title);
    NSLog(@"Координаты центра области, полученные из атрибутов платформы: (%f,%f)",centerPoint.x,centerPoint.y);
    NSLog(@"Географический центр области:");
    NSLog(@"Широта: %f", centerPointCoordinate.latitude);
    NSLog(@"Долгота: %f", centerPointCoordinate.longitude);
    // Определяем точку, задающую центр области
    CGPoint center = {0.25, 0.35};
    // Задаем новую центральную точку области
    [shape setCenter:center];
    // Получаем прямоугольник, ограничивающий область
    CGRect rect = [shape bounds];
    // Масштабируем и прокручиваем экран к полученному прямоугольнику
    [mapChart zoomToRect: rect];
}

Затем вручную нажмём на область слоя карты с идентификатором «RU». В результате этого будет изменён масштаб и выполнена прокрутка к данной области. Цвет заливки всех областей будет изменен на голубой. Также в точке нового центра указанной области будет отображена всплывающая подсказка:

В консоли среды разработки будут выведены название области карты, координаты центральной точки, полученные из атрибутов платформы, а также географические координаты центра области:

Название области: Russian Federation

Координаты центра области, полученные из атрибутов платформы: (744.861206,180.082138)

Географический центр области:

Широта: 69.423810

Долгота: 103.997054

См. также:

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