OpenLayers OpenLayers

Ticket #1090: zindex.patch

File zindex.patch, 2.1 kB (added by tschaub, 1 year ago)

reset z-index on all layers after removing a layer

  • lib/OpenLayers/Map.js

    old new  
    633633    }, 
    634634 
    635635    /** 
     636     * Method: resetLayersZIndex 
     637     * Reset each layer's z-index based on layer's array index 
     638     */ 
     639    resetLayersZIndex: function() { 
     640        for (var i = 0; i < this.layers.length; i++) { 
     641            var layer = this.layers[i]; 
     642            this.setLayerZIndex(layer, i); 
     643        } 
     644    }, 
     645 
     646    /** 
    636647    * APIMethod: addLayer 
    637648    * 
    638649    * Parameters: 
     
    740751                } 
    741752            } 
    742753        } 
     754 
     755        this.resetLayersZIndex(); 
     756 
    743757        this.events.triggerEvent("removelayer"); 
    744758    }, 
    745759 
  • tests/test_Map.html

    old new  
    602602            layers: layers, 
    603603            baseLayer: layers[0], 
    604604            layerContainerDiv: {removeChild: f}, 
    605             events: {triggerEvent: f} 
     605            events: {triggerEvent: f}, 
     606            resetLayersZIndex: function() {} 
    606607        }; 
    607608        OpenLayers.Map.prototype.removeLayer.apply(map, [map.baseLayer, false]); 
    608609        t.eq(map.baseLayer, null, 
     
    638639             "correct resolution after removal"); 
    639640    } 
    640641 
     642    function test_Map_removeLayer_zindex(t) { 
     643        t.plan(2); 
     644         
     645        map = new OpenLayers.Map('map'); 
     646 
     647        var layer0 = new OpenLayers.Layer('Test Layer 0', {isBaseLayer:true}); 
     648        var layer1 = new OpenLayers.Layer('Test Layer 1', {isBaseLayer:true}); 
     649        var layer2 = new OpenLayers.Layer('Test Layer 2', {isBaseLayer:false}); 
     650 
     651        map.addLayers([layer0, layer1, layer2]); 
     652        map.removeLayer(layer0); 
     653 
     654        t.eq(parseInt(layer1.div.style.zIndex), map.Z_INDEX_BASE['BaseLayer'], 
     655             "correct z-index after removeLayer"); 
     656        t.eq(parseInt(layer2.div.style.zIndex), map.Z_INDEX_BASE['Overlay'] + 5, 
     657             "correct z-index after removeLayer"); 
     658    } 
     659 
    641660    function test_13_Map_setBaseLayer_after_pan (t) { 
    642661        t.plan(1); 
    643662