Работа с пузырьком на карте Apple

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

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

Описание

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

Необходимые файлы

В базовый пример «Отображение экспресс-отчёта» необходимо добавить следующий файл:

Исходный код

Для выполнения примера необходимо создать класс, реализующий протокол для работы с источником данных карты Apple, а также добавить заголовочный файл класса в исходный код  класса ViewController (см. раздел «Отображение экспресс-отчёта»). Далее необходимо разместить в теле метода executeExample класса ViewController следующий код:

// Получаем контроллер для работы с экспресс-отчётом
MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
// Получаем делегат для работы с экспресс-отчётом
EAReportDelegateImpl *delegate = [contr delegate];
// Получаем источник данных карты
MapDataViewDatasource *dataSource = (MapDataViewDatasource *)[delegate mapDatasource];
// Создаём контроллер для работы с картой Apple
CustomMapDataBubbleViewController *bubbleViewController = [[CustomMapDataBubbleViewController alloc] initWithDatasource: dataSource];
// Получаем идентификаторы пузырьков на карте Apple
NSArray *allShapeIds = [bubbleViewController allShapeIDs];
NSLog(@"Количество пузырьков на карте: %d", [allShapeIds count]);
NSLog(@"Минимальный радиус пузырьков карты: %f", [bubbleViewController minSize]);
NSLog(@"Максимальный радиус пузырьков карты: %f", [bubbleViewController maxSize]);
if ([allShapeIds count] > 0) {
    // Получаем идентификатор первого пузырька на карте
    NSString *shapeId = [allShapeIds objectAtIndex: 0];
    MapShape *mapShape = [bubbleViewController shapeWithID: shapeId];
    NSLog(@"Идентификатор пузырька: %@", [mapShape ID]);
    // Получаем наименование пузырька
    NSString *shapeName = [bubbleViewController nameWithID: shapeId];
    NSLog(@"Наименование пузырька: %@", shapeName);
    
    [bubbleViewController setValue:[NSNumber numberWithInt:0] forKey:@"m_index"];
    // Получаем отображаемое наименование пузырька
    NSString *shapeCaption = [bubbleViewController captionWithID: shapeId];
    NSLog(@"Отображаемое наименование пузырька на карте: %@", shapeCaption);
    // Получаем координаты пузырька по идентификатору
    CLLocationCoordinate2D location = [bubbleViewController locationWithID: shapeId];
    NSLog(@"Широта, соответтвующая пузырьку: %f", location.latitude);
    NSLog(@"Долгота, соответствующая пузырьку: %f", location.longitude);
    // Получаем кисть для заливки пузырька
    Brush *brush = [bubbleViewController brushWithID: shapeId];
    // Определяем цвет кисти в виде шестнадцатиричной строки
    const CGFloat *colorComponents = CGColorGetComponents([[brush mainColor] CGColor]);
    CGFloat r = colorComponents[0];
    CGFloat g = colorComponents[1];
    CGFloat b = colorComponents[2];
    NSString *hexString=[NSString stringWithFormat:@"%02X%02X%02X", (int)(r * 255), (int)(g * 255), (int)(b * 255)];
    NSLog(@"Цвет заливки пузырька: %@", hexString);
    // Получаем размер пузырька
    double size = [bubbleViewController sizeWithID: shapeId];
    NSLog(@"Размер пузырька: %f", size);
} else {
    NSLog(@"На карте отсутствуют пузырьки");
}

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

Количество пузырьков на карте: 42

Минимальный радиус пузырьков карты: 0.000000

Максимальный радиус пузырьков карты: 0.000000

Идентификатор пузырька: GL

Наименование пузырька: Greenland

Отображаемое наименование пузырька на карте: Greenland

GDP per capita growth (annual %)

Широта, соответствующая пузырьку: 76.126060

Долгота, соответствующая пузырьку: -42.246990

Цвет заливки пузырька: F0F0F0

Размер пузырька: 20.000000

См. также:

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