Controlling Map Element Display

Operating system requirements: iOS 5.0 or later.

Mobile device: iPad.

Description

This example enables hiding of chart elements, which area exceeds the specified value.

Source Code

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

 (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear: animated];
    [self mapChartDidAppear: m_view];
    [self runExample];
}
-(void)runExample {
    // Enable hiding of map elements, which area exceeds the allowed value
    [m_view setOptimizedOut: YES];
    /* Set minimum relation of map element area
    to map plot area,
    at which these elements should be hidden */
    [m_view setOptimizeFactor: 0.03];
    // Refresh map
    [self refreshMap];
}
// Refreshes map
-(void)refreshMap {
    [[m_view timeAxis] setNeedsLayout];
    if ([m_view optimizedOut]) {
        MapLegend *legend = [m_view legend];
        [legend setVisibility: [self checkOnVisibility: CGSizeMake(legend.width, legend.height)]];
        
        MapLabel *caption = [m_view caption];
        [caption setVisibility: [self checkOnVisibility: CGSizeMake(caption.maxWidth, caption.font.lineHeight)]];
        
        MapTimeAxis *timeAxis = [m_view timeAxis];
        [timeAxis setVisible: [self checkOnVisibility: timeAxis.frame.size]];
    }
}
// Checks if it is required to display specified element with specified size
-(BOOL) checkOnVisibility: (CGSize) size {
    float mapSquare = m_view.frame.size.width * m_view.frame.size.height;
    float objectSquare = size.width * size.height;
    NSLog(@"Coefficient of occupied space: %f", (float)(objectSquare / mapSquare));
    return ((float)(objectSquare / mapSquare) <= [m_view optimizeFactor]);
}

After executing the example the map title, legend and timeline are hidden:

The development environment console displays coefficients of the space occupied with map elements relative to the whole map:

Coefficient of occupied space: 0.091186

Coefficient of occupied space: 0.036551

Coefficient of occupied space: 0.348596

See also:

Examples of Component Use