Merge pull request #312 from elemoine/redraw

Vector.Redraw should set zoomChanged to true in moveTo
This commit is contained in:
Éric Lemoine
2012-03-10 00:55:31 -08:00
2 changed files with 29 additions and 1 deletions

View File

@@ -537,6 +537,9 @@ OpenLayers.Layer.Vector = OpenLayers.Class(OpenLayers.Layer, {
if (OpenLayers.Renderer.NG && this.renderer instanceof OpenLayers.Renderer.NG) { if (OpenLayers.Renderer.NG && this.renderer instanceof OpenLayers.Renderer.NG) {
this.drawn = false; this.drawn = false;
} }
this.resolution = null; // this is to force Layer.redraw set
// zoomChanged to true in the moveTo
// call
return OpenLayers.Layer.prototype.redraw.apply(this, arguments); return OpenLayers.Layer.prototype.redraw.apply(this, arguments);
}, },
@@ -1023,4 +1026,4 @@ OpenLayers.Layer.Vector = OpenLayers.Class(OpenLayers.Layer, {
}, },
CLASS_NAME: "OpenLayers.Layer.Vector" CLASS_NAME: "OpenLayers.Layer.Vector"
}); });

View File

@@ -917,7 +917,32 @@
"featuresadded event received expected number of features"); "featuresadded event received expected number of features");
} }
function test_redraw(t) {
t.plan(2);
// test that when redraw is called on a vector layer then
// moveTo gets called on the layer and receives zoomChanged
// true
var log = [];
var map = new OpenLayers.Map("map");
var layer = new OpenLayers.Layer.Vector("vector", {isBaseLayer: true});
map.addLayer(layer);
map.setCenter([0, 0], 5);
layer.moveTo = function(extent, zoomChanged) {
log.push(zoomChanged);
};
layer.redraw();
t.eq(log.length, 1, "redraw makes moveTo be called once");
if (log.length == 1) {
t.eq(log[0], true, "redraw makes moveTo be called with zoomChanged true");
}
map.destroy();
}
</script> </script>
</head> </head>