diff --git a/lib/OpenLayers/Handler/Feature.js b/lib/OpenLayers/Handler/Feature.js index 599a02bdd3..d4c65e7872 100644 --- a/lib/OpenLayers/Handler/Feature.js +++ b/lib/OpenLayers/Handler/Feature.js @@ -404,7 +404,7 @@ OpenLayers.Handler.Feature = OpenLayers.Class(OpenLayers.Handler, { * evt - {Object} */ handleMapEvents: function(evt) { - if (!evt.property || evt.property == "order") { + if (evt.type == "removelayer" || evt.property == "order") { this.moveLayerToTop(); } }, diff --git a/lib/OpenLayers/Layer/Bing.js b/lib/OpenLayers/Layer/Bing.js index 662f0301b1..fa330bba4c 100644 --- a/lib/OpenLayers/Layer/Bing.js +++ b/lib/OpenLayers/Layer/Bing.js @@ -214,7 +214,10 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, { logo: metadata.brandLogoUri, copyrights: copyrights }); - this.map && this.map.events.triggerEvent("changelayer", {layer: this}); + this.map && this.map.events.triggerEvent("changelayer", { + layer: this, + property: "attribution" + }); }, /** diff --git a/lib/OpenLayers/Layer/GoogleNG.js b/lib/OpenLayers/Layer/GoogleNG.js index f36c8d8ce9..94b45324e2 100644 --- a/lib/OpenLayers/Layer/GoogleNG.js +++ b/lib/OpenLayers/Layer/GoogleNG.js @@ -205,7 +205,10 @@ OpenLayers.Layer.GoogleNG = OpenLayers.Class(OpenLayers.Layer.XYZ, { mapType: this.type, mapData: mapData }); - this.map && this.map.events.triggerEvent("changelayer", {layer: this}); + this.map && this.map.events.triggerEvent("changelayer", { + layer: this, + property: "attribution" + }); }, /** diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index e19cd62359..38ff104258 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -65,12 +65,12 @@ OpenLayers.Map = OpenLayers.Class({ * object will include a *layer* property that references the removed * layer. * - *changelayer* triggered after a layer name change, order change, - * opacity change, params change or visibility change - * (due to resolution thresholds). Listeners will receive an event - * object with *layer* and *property* properties. The *layer* - * property will be a reference to the changed layer. - * The *property* property will be a key to the - * changed property (name, order, opacity, params or visibility). + * opacity change, params change, visibility change (due to resolution + * thresholds) or attribution change (due to extent change). Listeners + * will receive an event object with *layer* and *property* properties. + * The *layer* property will be a reference to the changed layer. The + * *property* property will be a key to the changed property (name, + * order, opacity, params, visibility or attribution). * - *movestart* triggered after the start of a drag, pan, or zoom * - *move* triggered after each drag, pan, or zoom * - *moveend* triggered after a drag, pan, or zoom completes diff --git a/tests/Handler/Feature.html b/tests/Handler/Feature.html index 095b00c2b8..03d44c7b77 100644 --- a/tests/Handler/Feature.html +++ b/tests/Handler/Feature.html @@ -645,6 +645,20 @@ map.destroy(); } + + function test_layerorder(t) { + t.plan(2); + var map = new OpenLayers.Map("map"); + var base = new OpenLayers.Layer(null, {isBaseLayer: true}); + var vector = new OpenLayers.Layer.Vector(); + map.addLayers([base, vector]); + map.addControl(new OpenLayers.Control.SelectFeature(vector, {autoActivate: true})); + map.zoomToMaxExtent(); + t.eq(vector.getZIndex(), "725", "vector layer's zIndex correct"); + map.events.triggerEvent("changelayer"); + t.eq(vector.getZIndex(), "725", "vector layer's zIndex still correct after changelayer event"); + + }