Работа с топоосновой карты

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

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

Описание

В данном примере в консоль среды разработки выводятся следующие данные:

Также в примере выполняется разбор SVG-данных в основном и фоновом потоке. После запуска разбора данных в консоль среды разработки выводится информация о том, закончен ли разбор SVG-данных.

Исходный код

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

// Получаем топооснову
MapTopobase *topobase = [m_view topobase];
// Получаем атрибуты топоосновы
NSMutableDictionary *attributes = [topobase ppAttributes];
// Выводим значение атрибута с индексом RU
NSDictionary *nameAttributes = [attributes valueForKey:@"Name"];
NSLog(@"%@: %@", @"Значение атрибута с индексом RU", [nameAttributes valueForKey:@"RU"]);
// Получаем параметры атрибутов
NSDictionary *attrParams = [topobase ppAttributeParameters];
NSLog(@"Параметры атрибутов");
// Получаем ключи массива параметров атрибутов
NSArray *keys = [attrParams allKeys];
// Перебираем в цикле массив ключей
for(NSString *key in keys)
{
    // Получаем значение для текущего ключа
    id obj = [attrParams valueForKey:key];
    // Извлекаем из полученного значения имя параметра
    NSString *name = [obj valueForKey:@"Name"];
    // Извлекаем из полученного значения тип параметра
    NSString *type = [obj valueForKey:@"Type"];
    // Выводим в консоль среды разработки информацию о параметрах атрибута
    NSLog(@"Параметр: \"%@\", тип: \"%@\"",name, type);
}
// Выводим координаты центра рассчитанного географического региона
MKCoordinateRegion region = [topobase coordinateRegion];
NSLog(@"%@ %f, %f",@"Координаты центра географического региона:", region.center.latitude, region.center.longitude);
// Выводим позицию верхней левой координаты SVG-области
CLLocationCoordinate2D tl = [topobase topLeftCoordinate];
NSLog(@"%@: %f, %f", @"Позиция верхней левой координаты", tl.latitude, tl.longitude);
// Выводим позицию нижней правой координаты SVG-области
CLLocationCoordinate2D br = [topobase bottomRightCoordinate];
NSLog(@"%@: %f, %f", @"Позиция нижней правой координаты", br.latitude, br.longitude);
// Выводим признак наличия географических данных в SVG
NSLog(@"%@: %hhd",@"Признак наличия географических данных", [topobase hasGeoTransform]);
// Получаем координаты и выводим их в формате SVG-области
CGPoint svgCoord = [topobase convertCoordinateToPoint:tl];
NSLog(@"%@: %f, %f",@"Координаты в формате SVG-области", svgCoord.x, svgCoord.y);
// Выводим географические координаты
CLLocationCoordinate2D geoCoord = [topobase convertPointToCoordinate:svgCoord];
NSLog(@"%@: %f, %f",@"Географические координаты", geoCoord.latitude, geoCoord.longitude);
// Загружаем файл с топоосновой
NSData *file = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"world.svg" ofType:nil]];
// Создаем объекты топоосновы
MapTopobase *newTopobase1 = [[MapTopobase new] autorelease];
MapTopobase *newTopobase2 = [[MapTopobase new] autorelease];
// Начинаем разбор SVG-данных в основном потоке
NSLog(@"Начат разбор SVG-данных");
[newTopobase1 parseTopobase:file];
// Выводим признак окончания разбора
NSLog(@"%@ %hhd", @"Признак окончания разбора SVG-данных в основном потоке:", [newTopobase1 hasFinished]);
// Начинаем разбор SVG-данных в фоновом потоке
[newTopobase2 threadedParse:file];
// Выводим признак окончания разбора
NSLog(@"%@ %hhd", @"Признак окончания разбора SVG-данных в фоновом потоке:", [newTopobase2 hasFinished]);

В результате в консоль среды разработки будет выведена информация о топооснове карты:

Значение атрибута с индексом RU: Russian Federation

Параметры атрибутов

Параметр: "ISO", тип: "string"

Параметр: "IdMapping", тип: "int"

Параметр: "TextOriginOffset", тип: "point"

Параметр: "BarOriginOffset", тип: "point"

Параметр: "PieOriginOffset", тип: "point"

Параметр: "ImageOriginOffset", тип: "point"

Параметр: "Name", тип: "string"

Параметр: "Description", тип: "string"

Параметр: "OriginOffset", тип: "point"

Координаты центра географического региона: 13.997195, 10.893482

Позиция верхней левой координаты: 83.685213, -168.553737

Позиция нижней правой координаты: -55.690824, 190.340700

Признак наличия географических данных: 1

Координаты в формате SVG-области: -10.000000, -10.000000

Географические координаты: 83.685212, -168.553736

Начат разбор SVG-данных

Признак окончания разбора SVG-данных в основном потоке: 1

Признак окончания разбора SVG-данных в фоновом потоке: 0

См. также:

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