diff --git a/lib/OpenLayers/Strategy/Fixed.js b/lib/OpenLayers/Strategy/Fixed.js index a3fd5646c1..b06f2cd7e7 100644 --- a/lib/OpenLayers/Strategy/Fixed.js +++ b/lib/OpenLayers/Strategy/Fixed.js @@ -42,7 +42,8 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { * the strategy was already active. */ activate: function() { - if(OpenLayers.Strategy.prototype.activate.apply(this, arguments)) { + var activated = OpenLayers.Strategy.prototype.activate.apply(this, arguments); + if(activated) { this.layer.events.on({ "refresh": this.load, scope: this @@ -55,9 +56,8 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { scope: this }); } - return true; } - return false; + return activated; }, /** @@ -90,9 +90,9 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { var layer = this.layer; layer.events.triggerEvent("loadstart", {filter: layer.filter}); layer.protocol.read(OpenLayers.Util.applyDefaults({ - callback: OpenLayers.Function.bind(this.merge, this, - layer.map.getProjectionObject()), - filter: layer.filter + callback: this.merge, + filter: layer.filter, + scope: this }, options)); layer.events.un({ "visibilitychanged": this.load, @@ -103,23 +103,26 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { /** * Method: merge * Add all features to the layer. + * If the layer projection differs from the map projection, features + * will be transformed from the layer projection to the map projection. * * Parameters: - * mapProjection - {} the map projection * resp - {} The response object passed * by the protocol. */ - merge: function(mapProjection, resp) { + merge: function(resp) { var layer = this.layer; layer.destroyFeatures(); var features = resp.features; if (features && features.length > 0) { - if(!mapProjection.equals(layer.projection)) { + var remote = layer.projection; + var local = layer.map.getProjectionObject(); + if(!local.equals(remote)) { var geom; for(var i=0, len=features.length; i