[ka-Map-users] Hiding the scalebar

David Badke dbadke at uvic.ca
Wed Jan 25 17:23:35 EST 2006


A while ago I asked about being able to hide the scalebar while still 
displaying the legend, and doing this for some but not all maps.

I have now modified the code to do this; with the mods below, ka-Map 
will obey the SCALEBAR STATUS setting in the map file, allowing the 
scalebar to be turned on or off for individual maps. I am posting the 
code in case anyone else has a similar requirement. No guarantees, only 
tested in Firefox, and if anyone has a better way, let me know! 
(Something similar could also be done for LEGEND STATUS.)


This all only applies to the CVS version of ka-Map. If you have modified 
the 'reference' section in index.html (or equivalent) or the screen.css 
file, you will have to adjust this code. Note that if there is no 
SCALEBAR section in the map file, MapServer assumes the STATUS is OFF.

1. In init.php, just before the $szResult .= "this.addMap( map );"; line 
(around 261), add these lines:

    $show_scale = 'true';
    if ($oMap->scalebar->status == MS_OFF)
        $show_scale = 'false';
    $szResult .= "map.showScalebar = " . $show_scale . ';';

This passes the SCALEBAR STATUS setting from the map file to a new 
element in the _map object.


2. In kaMap.js, in the _map object constructor (around line 1888), add 
this line:

    this.showScalebar = true;

By default, the scalebar will be visible.


3. In startUp.js, in the myMapInitialized function, add these lines (I 
put them near the end of the function; probably doesn't matter):

    if(getObject('scaleReference')) {
        if(!currentMap.showScalebar) {
            getObject('scaleReference').display = 'none';
            getObject('refToggler').bottom = '153px';
            getObject('reference').height = '150px';
        }
        else {
            getObject('scaleReference').display = 'block';
            getObject('refToggler').bottom = '213px';
            getObject('reference').height = '210px';
        }
    }

This sets the visibility of the whole 'scaleReference' div, and adjusts 
the CSS of the 'reference' and 'refToggler' divs so the legend is still 
at the bottom of the window.


4. The scalebar div is displayed before this code can be executed, so 
the div is initially visible and then vanishes. If you want it to not do 
that, add a 'display: none' line to the scaleReference style in 
screen.css; the div will then be initially hidden but will appear if the 
SCALEBAR STATUS is ON.


David



More information about the ka-Map-users mailing list