Определение цвета заливки области карты

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

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

Описание

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

Исходный код

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

-(void) executeExample {
    // Получам область карты с идентификатором «RU»
    MapShape *shape = [[[m_view layers] objectAtIndex:0] shapeWithId:@"RU"];
    // Получаем настройки объекта зависимости карты от данных
    DataDependency *dataDependency = (DataDependency *)[[[[[m_view layers] objectAtIndex:0] visuals] objectAtIndex:0] background];
    // Определяем цвет заливки области карты
    Brush *brush = (Brush *)[self getBrushForShapeID: [shape ID] FromDataDependency: dataDependency];
    // Устанавливаем цвет заливки области карты в настройке стиля
    NSString *fillStyle = [NSString stringWithFormat:@"fill:%@", [self colorToHex: [brush mainColor]]];
    [[shape attributes] setValue:fillStyle forKey:@"style"];
    
    // Повторно получаем цвет заливки области карты
    MapShape *newShape = [[[m_view topobase] rootLayer] shapeWithId: @"RU"];
    UIColor *brushColor = [[newShape background] mainColor];
    NSLog(@"Цвет заливки области карты с идентификатором «%@»: #%@", [newShape ID], [self colorToHex: brushColor]);
};
// Преобразует объект цвета в строку в шестнадцатиричном представлении
-(NSString *) colorToHex: (UIColor *) color {
    const CGFloat *components = CGColorGetComponents(color.CGColor);
    CGFloat r = components[0];
    CGFloat g = components[1];
    CGFloat b = components[2];
    NSString *hexString=[NSString stringWithFormat:@"%02X%02X%02X", (int)(r * 255), (int)(g * 255), (int)(b * 255)];
    return hexString;
}
// Возвращает кисть заливки области карты по значению
-(NSObject *)getBrushForShapeID: (NSString *) shapeId FromDataDependency: (DataDependency *) dataDependency {
    if([dataDependency isDependent]) {
        NSNumber *shapeValue = [[dataDependency dataSource] valueWithId: shapeId];
        return [[dataDependency scale] getValue: shapeValue];
        } else {
        return [dataDependency value];
    }
}

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

Цвет заливки области карты с идентификатором «RU»: #FF462C

См. также:

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