From 88e184e7e55c086ba75c54c48f68b886ecd8a73a Mon Sep 17 00:00:00 2001 From: friedjoff Date: Tue, 8 Jan 2013 14:49:42 +0100 Subject: [PATCH 1/6] Move detection of map procjection to merge function, check for successful response and fix tests. --- lib/OpenLayers/Strategy/Fixed.js | 53 +++++++++++++++++--------------- tests/Strategy/Fixed.html | 17 +++++----- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/lib/OpenLayers/Strategy/Fixed.js b/lib/OpenLayers/Strategy/Fixed.js index 5f1ee11663..2446368197 100644 --- a/lib/OpenLayers/Strategy/Fixed.js +++ b/lib/OpenLayers/Strategy/Fixed.js @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for +/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for * full list of contributors). Published under the 2-clause BSD license. * See license.txt in the OpenLayers distribution or repository for the * full text of the license. */ @@ -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.call(this); + 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; }, /** @@ -87,14 +87,13 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { * options - {Object} options to pass to protocol read. */ load: function(options) { - 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 + this.layer.events.triggerEvent("loadstart", {filter: this.layer.filter}); + this.layer.protocol.read(OpenLayers.Util.applyDefaults({ + callback: this.merge, + filter: this.layer.filter, + scope: this }, options)); - layer.events.un({ + this.layer.events.un({ "visibilitychanged": this.load, scope: this }); @@ -103,29 +102,33 @@ 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) { - var layer = this.layer; - layer.destroyFeatures(); - var features = resp.features; - if (features && features.length > 0) { - if(!mapProjection.equals(layer.projection)) { - var geom; - for(var i=0, len=features.length; i 0) { + var remote = this.layer.projection; + var local = this.layer.map.getProjectionObject(); + if(!local.equals(remote)) { + var geom; + for(var i=0, len=features.length; i Date: Tue, 8 Jan 2013 14:55:22 +0100 Subject: [PATCH 2/6] Fix copyright date --- lib/OpenLayers/Strategy/Fixed.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/OpenLayers/Strategy/Fixed.js b/lib/OpenLayers/Strategy/Fixed.js index 2446368197..00df50325b 100644 --- a/lib/OpenLayers/Strategy/Fixed.js +++ b/lib/OpenLayers/Strategy/Fixed.js @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2012 by OpenLayers Contributors (see authors.txt for +/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for * full list of contributors). Published under the 2-clause BSD license. * See license.txt in the OpenLayers distribution or repository for the * full text of the license. */ From c1015d31e49b55e2cdc2c39977bef7c4842961cf Mon Sep 17 00:00:00 2001 From: friedjoff Date: Tue, 8 Jan 2013 15:40:00 +0100 Subject: [PATCH 3/6] Restore arguments parameter to make function future-proof --- lib/OpenLayers/Strategy/Fixed.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/OpenLayers/Strategy/Fixed.js b/lib/OpenLayers/Strategy/Fixed.js index 00df50325b..00bcfe74e6 100644 --- a/lib/OpenLayers/Strategy/Fixed.js +++ b/lib/OpenLayers/Strategy/Fixed.js @@ -42,7 +42,7 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { * the strategy was already active. */ activate: function() { - var activated = OpenLayers.Strategy.prototype.activate.call(this); + var activated = OpenLayers.Strategy.prototype.activate.apply(this, arguments); if(activated) { this.layer.events.on({ "refresh": this.load, From 83be3ff7e8e6c0fc95f5e0a4c6506793698f868e Mon Sep 17 00:00:00 2001 From: friedjoff Date: Tue, 8 Jan 2013 17:41:59 +0100 Subject: [PATCH 4/6] Restore layer alias variable --- lib/OpenLayers/Strategy/Fixed.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/OpenLayers/Strategy/Fixed.js b/lib/OpenLayers/Strategy/Fixed.js index 00bcfe74e6..e54e166fdc 100644 --- a/lib/OpenLayers/Strategy/Fixed.js +++ b/lib/OpenLayers/Strategy/Fixed.js @@ -87,13 +87,14 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { * options - {Object} options to pass to protocol read. */ load: function(options) { - this.layer.events.triggerEvent("loadstart", {filter: this.layer.filter}); - this.layer.protocol.read(OpenLayers.Util.applyDefaults({ + var layer = this.layer; + layer.events.triggerEvent("loadstart", {filter: layer.filter}); + layer.protocol.read(OpenLayers.Util.applyDefaults({ callback: this.merge, - filter: this.layer.filter, + filter: layer.filter, scope: this }, options)); - this.layer.events.un({ + layer.events.un({ "visibilitychanged": this.load, scope: this }); @@ -110,7 +111,8 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { * by the protocol. */ merge: function(resp) { - this.layer.destroyFeatures(); + var layer = this.layer; + layer.destroyFeatures(); if (resp.success()) { var features = resp.features; if (features && features.length > 0) { @@ -125,10 +127,10 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { } } } - this.layer.addFeatures(features); + layer.addFeatures(features); } } - this.layer.events.triggerEvent("loadend", {response: resp}); + layer.events.triggerEvent("loadend", {response: resp}); }, CLASS_NAME: "OpenLayers.Strategy.Fixed" From b442f85bf438cd626aa441ff06a8bafc26954c5f Mon Sep 17 00:00:00 2001 From: friedjoff Date: Tue, 8 Jan 2013 17:48:59 +0100 Subject: [PATCH 5/6] Restore layer alias variable --- lib/OpenLayers/Strategy/Fixed.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/OpenLayers/Strategy/Fixed.js b/lib/OpenLayers/Strategy/Fixed.js index e54e166fdc..3612f39b91 100644 --- a/lib/OpenLayers/Strategy/Fixed.js +++ b/lib/OpenLayers/Strategy/Fixed.js @@ -116,8 +116,8 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { if (resp.success()) { var features = resp.features; if (features && features.length > 0) { - var remote = this.layer.projection; - var local = this.layer.map.getProjectionObject(); + var remote = layer.projection; + var local = layer.map.getProjectionObject(); if(!local.equals(remote)) { var geom; for(var i=0, len=features.length; i Date: Tue, 8 Jan 2013 17:58:34 +0100 Subject: [PATCH 6/6] Remove unnecessary success check --- lib/OpenLayers/Strategy/Fixed.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/lib/OpenLayers/Strategy/Fixed.js b/lib/OpenLayers/Strategy/Fixed.js index 3612f39b91..c869ab944f 100644 --- a/lib/OpenLayers/Strategy/Fixed.js +++ b/lib/OpenLayers/Strategy/Fixed.js @@ -113,22 +113,20 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, { merge: function(resp) { var layer = this.layer; layer.destroyFeatures(); - if (resp.success()) { - var features = resp.features; - if (features && features.length > 0) { - var remote = layer.projection; - var local = layer.map.getProjectionObject(); - if(!local.equals(remote)) { - var geom; - for(var i=0, len=features.length; i 0) { + var remote = layer.projection; + var local = layer.map.getProjectionObject(); + if(!local.equals(remote)) { + var geom; + for(var i=0, len=features.length; i