Требования к операционной системе: 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
См. также: