diff --git a/lib/OpenLayers/Layer.js b/lib/OpenLayers/Layer.js index f8ddfbe9fd..b3229f461c 100644 --- a/lib/OpenLayers/Layer.js +++ b/lib/OpenLayers/Layer.js @@ -86,10 +86,13 @@ OpenLayers.Layer = OpenLayers.Class({ * element - {DOMElement} A reference to layer.events.element. * * Supported map event types: - * loadstart - Triggered when layer loading starts. - * loadend - Triggered when layer loading ends. When using Fixed or BBOX - * strategies, the event object includes a *response* property holding - * an OpenLayers.Protocol.Response object. + * loadstart - Triggered when layer loading starts. When using a Vector + * layer with a Fixed or BBOX strategy, the event object includes + * a *filter* property holding the OpenLayers.Filter used when + * calling read on the protocol. + * loadend - Triggered when layer loading ends. When using a Vector layer + * with a Fixed or BBOX strategy, the event object includes a + * *response* property holding an OpenLayers.Protocol.Response object. * visibilitychanged - Triggered when layer visibility is changed. * move - Triggered when layer moves (triggered with every mousemove * during a drag). diff --git a/lib/OpenLayers/Strategy/BBOX.js b/lib/OpenLayers/Strategy/BBOX.js index 88b4c6e95f..4aeef1e206 100644 --- a/lib/OpenLayers/Strategy/BBOX.js +++ b/lib/OpenLayers/Strategy/BBOX.js @@ -217,10 +217,11 @@ OpenLayers.Strategy.BBOX = OpenLayers.Class(OpenLayers.Strategy, { this.layer.protocol.abort(this.response); this.layer.events.triggerEvent("loadend"); } - this.layer.events.triggerEvent("loadstart"); + var evt = {filter: this.createFilter()}; + this.layer.events.triggerEvent("loadstart", evt); this.response = this.layer.protocol.read( OpenLayers.Util.applyDefaults({ - filter: this.createFilter(), + filter: evt.filter, callback: this.merge, scope: this }, options)); diff --git a/lib/OpenLayers/Strategy/Fixed.js b/lib/OpenLayers/Strategy/Fixed.js index 6b38b0b9c9..3a4549275a 100644 --- a/lib/OpenLayers/Strategy/Fixed.js +++ b/lib/OpenLayers/Strategy/Fixed.js @@ -88,7 +88,7 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { */ load: function(options) { var layer = this.layer; - layer.events.triggerEvent("loadstart"); + layer.events.triggerEvent("loadstart", {filter: layer.filter}); layer.protocol.read(OpenLayers.Util.applyDefaults({ callback: OpenLayers.Function.bind(this.merge, this, layer.map.getProjectionObject()), diff --git a/tests/Strategy/BBOX.html b/tests/Strategy/BBOX.html index ce9f2a7717..d45e8df068 100644 --- a/tests/Strategy/BBOX.html +++ b/tests/Strategy/BBOX.html @@ -112,7 +112,7 @@ function test_events(t) { - t.plan(6); + t.plan(7); var log = []; @@ -141,6 +141,7 @@ t.eq(log.length, 2, "2 events logged"); t.eq(log[0].type, "loadstart", "loadstart first"); + t.ok(log[0].filter.type === OpenLayers.Filter.Spatial.BBOX, "loadstart includes filter used"); t.eq(log[1].type, "loadend", "loadend second"); t.ok(log[1].response == response, "loadend includes response"); diff --git a/tests/Strategy/Fixed.html b/tests/Strategy/Fixed.html index 2f9f5b3adc..19505cbeeb 100644 --- a/tests/Strategy/Fixed.html +++ b/tests/Strategy/Fixed.html @@ -62,7 +62,7 @@ function test_events(t) { - t.plan(6); + t.plan(7); var log = []; @@ -70,6 +70,11 @@ var map = new OpenLayers.Map("map"); var layer = new OpenLayers.Layer.Vector(null, { + filter: new OpenLayers.Filter.Comparison({ + type: '==', + property: 'foo', + value: 'bar' + }), strategies: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol({ read: function(config) { @@ -92,6 +97,7 @@ t.eq(log.length, 2, "2 events logged"); t.eq(log[0].type, "loadstart", "loadstart first"); + t.eq(log[0].filter, layer.filter, "filter passed on as argument to loadstart"); t.eq(log[1].type, "loadend", "loadend second"); t.ok(log[1].response == response, "loadend includes response");