don't waste coordinate space by using a smaller renderer extent and updating it on moveend. r=bartvde (closes #3359)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@12163 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -474,7 +474,7 @@ OpenLayers.Layer.Vector = OpenLayers.Class(OpenLayers.Layer, {
|
||||
|
||||
var ng = (OpenLayers.Renderer.NG && this.renderer instanceof OpenLayers.Renderer.NG);
|
||||
if (ng) {
|
||||
zoomChanged && this.renderer.updateDimensions();
|
||||
dragging || this.renderer.updateDimensions(zoomChanged);
|
||||
} else {
|
||||
var coordSysUnchanged = true;
|
||||
|
||||
|
||||
@@ -38,10 +38,14 @@ OpenLayers.Renderer.NG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
* To be extended by subclasses - here we set positioning related styles
|
||||
* on HTML elements, subclasses have to do the same for renderer specific
|
||||
* elements (e.g. viewBox, width and height of the rendererRoot)
|
||||
*
|
||||
* Parameters:
|
||||
* zoomChanged - {Boolean} Has the zoom changed? If so, subclasses may have
|
||||
* to update feature styles/dimensions.
|
||||
*/
|
||||
updateDimensions: function() {
|
||||
updateDimensions: function(zoomChanged) {
|
||||
var mapExtent = this.map.getExtent();
|
||||
var renderExtent = this.map.getMaxExtent();
|
||||
var renderExtent = mapExtent.scale(3);
|
||||
this.setExtent(renderExtent, true);
|
||||
var res = this.getResolution();
|
||||
var div = this.rendererRoot.parentNode;
|
||||
|
||||
@@ -73,8 +73,11 @@ OpenLayers.Renderer.SVG2 = OpenLayers.Class(OpenLayers.Renderer.NG, {
|
||||
|
||||
/**
|
||||
* Method: updateDimensions
|
||||
*
|
||||
* Parameters:
|
||||
* zoomChanged - {Boolean}
|
||||
*/
|
||||
updateDimensions: function() {
|
||||
updateDimensions: function(zoomChanged) {
|
||||
OpenLayers.Renderer.NG.prototype.updateDimensions.apply(this, arguments);
|
||||
|
||||
var res = this.getResolution();
|
||||
@@ -92,19 +95,21 @@ OpenLayers.Renderer.SVG2 = OpenLayers.Class(OpenLayers.Renderer.NG, {
|
||||
this.rendererRoot.setAttributeNS(null, "width", width / res);
|
||||
this.rendererRoot.setAttributeNS(null, "height", height / res);
|
||||
|
||||
// update styles for the new resolution
|
||||
var i, len;
|
||||
var nodes = this.vectorRoot.childNodes;
|
||||
for (i=0, len=nodes.length; i<len; ++i) {
|
||||
this.setStyle(nodes[i]);
|
||||
}
|
||||
var textNodes = this.textRoot.childNodes;
|
||||
var label;
|
||||
for (i=0, len=textNodes.length; i<len; ++i) {
|
||||
label = textNodes[i];
|
||||
this.drawText(label, label._style,
|
||||
new OpenLayers.Geometry.Point(label._x, label._y)
|
||||
);
|
||||
if (zoomChanged === true) {
|
||||
// update styles for the new resolution
|
||||
var i, len;
|
||||
var nodes = this.vectorRoot.childNodes;
|
||||
for (i=0, len=nodes.length; i<len; ++i) {
|
||||
this.setStyle(nodes[i]);
|
||||
}
|
||||
var textNodes = this.textRoot.childNodes;
|
||||
var label;
|
||||
for (i=0, len=textNodes.length; i<len; ++i) {
|
||||
label = textNodes[i];
|
||||
this.drawText(label, label._style,
|
||||
new OpenLayers.Geometry.Point(label._x, label._y)
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user