diff --git a/lib/OpenLayers/Renderer.js b/lib/OpenLayers/Renderer.js index bc4ac12cdb..68d48c898e 100644 --- a/lib/OpenLayers/Renderer.js +++ b/lib/OpenLayers/Renderer.js @@ -139,7 +139,9 @@ OpenLayers.Renderer = OpenLayers.Class({ setExtent: function(extent, resolutionChanged) { this.extent = extent.clone(); if (this.map.baseLayer && this.map.baseLayer.wrapDateLine) { - this.extent = extent.wrapDateLine(this.map.getMaxExtent()); + var ratio = extent.getWidth() / this.map.getExtent().getWidth(), + extent = extent.scale(1 / ratio); + this.extent = extent.wrapDateLine(this.map.getMaxExtent()).scale(ratio); } if (resolutionChanged) { this.resolution = null; diff --git a/lib/OpenLayers/Renderer/Elements.js b/lib/OpenLayers/Renderer/Elements.js index 72f5ca659e..9ebab760fc 100644 --- a/lib/OpenLayers/Renderer/Elements.js +++ b/lib/OpenLayers/Renderer/Elements.js @@ -498,8 +498,9 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, { var coordSysUnchanged = OpenLayers.Renderer.prototype.setExtent.apply(this, arguments); var resolution = this.getResolution(); if (this.map.baseLayer && this.map.baseLayer.wrapDateLine) { - coordSysUnchanged = this.featureDx === 0; var rightOfDateLine, + ratio = extent.getWidth() / this.map.getExtent().getWidth(), + extent = extent.scale(1 / ratio), world = this.map.getMaxExtent(); if (world.right > extent.left && world.right < extent.right) { rightOfDateLine = true; diff --git a/tests/Renderer/Elements.html b/tests/Renderer/Elements.html index 0fe940e204..53590e2d60 100644 --- a/tests/Renderer/Elements.html +++ b/tests/Renderer/Elements.html @@ -614,6 +614,9 @@ getMaxExtent: function() { return new OpenLayers.Bounds(-180,-90,180,90); }, + getExtent: function() { + return r.extent; + }, getResolution: function() { return resolution; },