Using Scale Methods and Properties

Operating system requirements: iOS 5.0 or later.

Mobile device: iPad.

Description

This example implements executing the following operations:

Source Code

Executing the example requires to place the following code in the body of the executeExample method of the ViewController class (see the Creating a Map with a Timeline section):

// Get object for working with map visual element
MapAreaVisual *visual = [[[[m_view layers] objectAtIndex:0] visuals] objectAtIndex:0];
// Get object for working with scale
ValueScale *scale = [[visual background] scale];
// Create an array for storing scale data
NSMutableArray *scaleValue = [NSMutableArray array];
// Create an array for storing scale color values
NSMutablerray *colorBrushes = [NSMutableArray array];
// Create an object for working with color
UIColor *noDataColor = [UIColor colorWithHex:@"79c4fb"];
/* Create an object for working with the brush used
for filling map layer areas, for which there is no data */
SolidColorBrush* noDataBrush = [SolidColorBrush solidColorBrushWithColor: noDataColor];
// Set scale brush
[scale setNoData:noDataBrush];
// Set colors for filling map layer area background
NSArray *colors = [NSArray arrayWithObjects:@"50b1fa", @"078bed", @"0673c4", nil];
// Set scale type
[scale setScaleType:ValueScaleLinear];
// Set number of scale steps required on data update
[scale setScaleSteps:2];
// Determine map scale step
double step = (datasource.maxValue - datasource.minValue) / [scale scaleSteps];
/* Add new maximum and minimum scale values
to data array */
[scaleValue addObject:[NSNumber numberWithDouble: 100]];
[scaleValue addObject:[NSNumber numberWithDouble: 10]];
// Update scale data
[scale updateWithData: scaleValue];
// Fill array of color values in cycle
for (int i = 0; i <= [scale scaleSteps]; i++)
{
    // Get current color value
    NSString *hexColor = [colors objectAtIndex:i];
    UIColor *color = [UIColor colorWithHex:hexColor];
    /* Create an object for working with the brush used
    to fill map layer area background*/
    SolidColorBrush* brush = [SolidColorBrush solidColorBrushWithColor:color];
    // Add the current object for working with brush to array of color values
    [colorBrushes addObject:brush];
}
// Update scale values
[scale setScaleValues: colorBrushes];
// Create arrays for working with the Equal and Greater values
NSMutableArray *equals = [NSMutableArray array];
NSMutableArray *greaters = [NSMutableArray array];
// Parse the Equal and Greater arrays in cycle
for (int i = 0; i < [scale scaleSteps]; i++)
{
    // Offset color values of arrays by 1 unit
    [equals addObject:[scale.less objectAtIndex:i + 1]];
}
// Get a new color value for last elements of array
NSString *hexLastColor = [colors objectAtIndex:[scale scaleSteps]];
UIColor *lastColor = [UIColor colorWithHex:hexLastColor];
/* Create an object for working with the brush used
to fill map layer area background */
SolidColorBrush* brush = [SolidColorBrush solidColorBrushWithColor:lastColor];
// Fill last elements of array with new color value
[equals addObject: brush];
// Set new scale values for the Equal and Greater arrays
[scale setEqual: equals];
[scale setGreater:equals];
/* Get the brush used to fill map layer areas,
for which there is no data */
SolidColorBrush *borders = [scale getValue];
// Set area border color for map root layer
[[[m_view layers] objectAtIndex:0] setStrokeColor: [borders color]];
// Set area border thickness for map root layer
[[[m_view layers] objectAtIndex:0] setStrokeThickness:1];
// Set the number, by which scale value is searched
NSNumber *number = [NSNumber numberWithDouble:20.2];
/* Get the brush corresponding to the number and set it
as a map title background */
[[m_view caption] setBackground:[scale getValue: number]];

After executing the example new color values for map scale are set.  A blue color is applied for all map root layer area borders that corresponds to scale value for missing data. A background color is set for map title that corresponds to the 20.2 value:

See also:

Examples of Component Use