[OpenLayers-Users] Moving LayerSwitcher position from top-right corner to bottom-left corner

Adrian Popa adrian_gh.popa at romtelecom.ro
Fri Jul 16 10:41:04 EDT 2010


I studied CSS extensively the past two days, and I sort of managed to 
move it, but I still have two problems:

1. I can't position the layer-switcher-maximize button if I want to add 
an offset measured from the bottom (bottom: 40px). I can only display it 
if I specify an offset from the top - but my map size is not fixed, and 
I would like to have it linked to the bottom of the map. The rest of the 
div and the minimize button are displayed as expected.

Here is my CSS override code:
<style>
      .olControlLayerSwitcher {
         /*  position: absolute;
           top: 25px;
           right: 0px;
         */
           width: 20em;
           font-family: sans-serif;
           font-weight: bold;
           margin-top: 3px;
           margin-left: 3px;
           margin-bottom: 3px;
           font-size: smaller;
           color: white;
           background-color: transparent;

           position: relative !important;
           top: 350px !important;
           right: auto !important;
           bottom: auto !important;
           left: 0px !important;
           /* if I set top: auto !important and bottom: 40px !important, 
the div is no longer drawn on the screen */

      }
      .olControlLayerSwitcher .layersDiv {
          padding-top: 5px;
          padding-left: 0px !important;
          padding-bottom: 5px;
          padding-right: 0px !important;
          background-color: darkblue;
          width: 100%;
          height: auto !important;
     }

     .olControlLayerSwitcher .layersDiv .baseLbl,
     .olControlLayerSwitcher .layersDiv .dataLbl {
          margin-top: 3px;
          margin-left: 3px;
          margin-bottom: 3px;
     }

     .olControlLayerSwitcher .layersDiv .baseLayersDiv,
     .olControlLayerSwitcher .layersDiv .dataLayersDiv {
          padding-left: 10px;
     }

     .olControlLayerSwitcher .maximizeDiv,
     .olControlLayerSwitcher .minimizeDiv {
          top: auto !important;
          right: auto !important;

          position: absolute !important;
          bottom: 40px !important;
          left: 0px !important;
     }


2. It seems that the corner effect in the layer selection div is done by 
having some spans with variable margins - but the problem is - these 
margins are designed only to generate the left rounded corner. I need to 
adapt them to generate the rigth corner with the same margin as the left 
corner. Question is - since there are no classes or ids, can I do this 
without changing the OL API?
Here is how the current code looks like:

<div style="background-color: transparent;">
<span style="background-color: darkblue; display: block; height: 1px; 
overflow: hidden; font-size: 1px; margin-left: 5px; margin-right: 0px; 
border-left-width: 0px; border-right-width: 0px; opacity: 0.75;"></span>

And here's how it is supposed to look like in order to have rounded 
corners in the layer selection div on all sides (set the right-margin to 
the same value as the left-margin):

<div style="background-color: transparent;">
<span style="background-color: darkblue; display: block; height: 1px; 
overflow: hidden; font-size: 1px; margin-left: 5px; margin-right: 5px; 
border-left-width: 0px; border-right-width: 0px; opacity: 0.75;"></span>

I am not quite sure where these divs are set - so that I can override them.

Hope somebody can shed light on these problems,

Regards,
Adrian





More information about the Users mailing list