add changelayer event to mergeNewParams function, r=bartvde (closes #2179)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@9618 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Éric Lemoine
2009-08-13 06:31:47 +00:00
parent 2b9bd25530
commit d83376de64
3 changed files with 29 additions and 9 deletions

View File

@@ -121,7 +121,14 @@ OpenLayers.Layer.HTTPRequest = OpenLayers.Class(OpenLayers.Layer, {
*/
mergeNewParams:function(newParams) {
this.params = OpenLayers.Util.extend(this.params, newParams);
return this.redraw();
var ret = this.redraw();
if(this.map != null) {
this.map.events.triggerEvent("changelayer", {
layer: this,
property: "params"
});
}
return ret;
},
/**

View File

@@ -62,11 +62,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 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 or visibility).
* 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).
* - *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

View File

@@ -65,9 +65,19 @@
}
function test_Layer_HTTPRequest_mergeNewParams (t) {
t.plan( 4 );
t.plan( 8 );
var map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.HTTPRequest(name, url, params, options);
map.addLayer(layer);
var scope = {some: "scope"}, log = [];
map.events.on({
changelayer: function(e) {
log.push({layer: e.layer, property: e.property, scope: this});
},
scope: scope
});
var newParams = { layers: 'sooper',
chickpeas: 'image/png'};
@@ -76,6 +86,10 @@
t.eq( layer.params.layers, "sooper", "mergeNewParams() overwrites well");
t.eq( layer.params.chickpeas, "image/png", "mergeNewParams() adds well");
t.eq( log.length, 1, "mergeNewParams() triggers changelayer once");
t.ok( log[0].layer == layer, "mergeNewParams() passes changelayer listener the expected layer");
t.ok( log[0].property == "params", "mergeNewParams() passes changelayer listener the property \"params\"");
t.eq( log[0].scope, scope, "mergeNewParams() executes changelayer listener with expected scope");
newParams.chickpeas = 151;
@@ -85,8 +99,6 @@
t.ok(true, "layer.mergeNewParams calls layer.redraw");
}
layer.mergeNewParams();
}
function test_Layer_HTTPRequest_getFullRequestString (t) {