Search code examples
openlayerslayerarrays

How to unselect layers in layerswitcher and save in variable only the selected ones


Thanks to Richard Greenwood, this function shows which layer is unselected in the layerswitcher control.

map.events.register('changelayer', null, function(evt){
       if(evt.property === "visibility") {
          alert(evt.layer.name + " layer visibility changed to " + evt.layer.visibility );
       }
});

I'm wondering how I can save in a variable array the unselected layers. For instance I have layers "a", "b", "c" in the layerswitcher, so "a" is unselected and I want "b" and "c" saved in an array like myarray = [b,c]. Then, I can loop over this array to do some processes calling only layers "b" and "c".

I'll appreciate some ideas about this, thanks in advance,


Solution

  • For example:

    var vlayers = [];
    function get_vlayers(){
      vlayers = [];    
      for (var i=0; i<map.layers.length; i+=1) {
        if (map.layers[i].visibility) {
          vlayers.push(map.layers[i]);
        }
      }
    }
    map.events.register('changelayer', null, get_vlayers)