redraw on vector layers should set zoomChanged to true in the moveTo call (refs #305)

This commit is contained in:
Éric Lemoine
2012-03-09 23:40:34 +01:00
parent 1a444589e0
commit c693884f5f
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);
}, },

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>