avoid code duplication in Renderer/SVG.js, thanks fredj for the patch (closes #1144)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@5188 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -19,13 +19,12 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
xmlns: "http://www.w3.org/2000/svg",
|
xmlns: "http://www.w3.org/2000/svg",
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Property: maxPixel
|
* Constant: MAX_PIXEL
|
||||||
* {Integer} Firefox has a limitation where values larger or smaller than
|
* {Integer} Firefox has a limitation where values larger or smaller than
|
||||||
* about 15000 in an SVG document lock the browser up. This
|
* about 15000 in an SVG document lock the browser up. This
|
||||||
* works around it.
|
* works around it.
|
||||||
*/
|
*/
|
||||||
maxPixel: 15000,
|
MAX_PIXEL: 15000,
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Property: localResolution
|
* Property: localResolution
|
||||||
@@ -68,6 +67,22 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
return supported;
|
return supported;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: inValidRange
|
||||||
|
* See #669 for more information
|
||||||
|
* Parameters:
|
||||||
|
* x - {Integer}
|
||||||
|
* y - {Integer}
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* {Boolean} Whether or not the 'x' and 'y' coordinates are in the
|
||||||
|
* valid range.
|
||||||
|
*/
|
||||||
|
inValidRange: function(x, y) {
|
||||||
|
return (x >= -this.MAX_PIXEL && x <= this.MAX_PIXEL &&
|
||||||
|
y >= -this.MAX_PIXEL && y <= this.MAX_PIXEL);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: setExtent
|
* Method: setExtent
|
||||||
*
|
*
|
||||||
@@ -340,11 +355,8 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
var resolution = this.getResolution();
|
var resolution = this.getResolution();
|
||||||
var x = (geometry.x / resolution + this.left);
|
var x = (geometry.x / resolution + this.left);
|
||||||
var y = (geometry.y / resolution - this.top);
|
var y = (geometry.y / resolution - this.top);
|
||||||
var draw = true;
|
|
||||||
if (x < -this.maxPixel || x > this.maxPixel) { draw = false; }
|
|
||||||
if (y < -this.maxPixel || y > this.maxPixel) { draw = false; }
|
|
||||||
|
|
||||||
if (draw) {
|
if (this.inValidRange(x, y)) {
|
||||||
node.setAttributeNS(null, "cx", x);
|
node.setAttributeNS(null, "cx", x);
|
||||||
node.setAttributeNS(null, "cy", y);
|
node.setAttributeNS(null, "cy", y);
|
||||||
node.setAttributeNS(null, "r", radius);
|
node.setAttributeNS(null, "r", radius);
|
||||||
@@ -419,14 +431,11 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
* geometry - {<OpenLayers.Geometry>}
|
* geometry - {<OpenLayers.Geometry>}
|
||||||
*/
|
*/
|
||||||
drawRectangle: function(node, geometry) {
|
drawRectangle: function(node, geometry) {
|
||||||
// This needs to be reworked
|
var resolution = this.getResolution();
|
||||||
var resolution=this.getResolution();
|
|
||||||
var x = (geometry.x / resolution + this.left);
|
var x = (geometry.x / resolution + this.left);
|
||||||
var y = (geometry.y / resolution - this.top);
|
var y = (geometry.y / resolution - this.top);
|
||||||
var draw = true;
|
|
||||||
if (x < -this.maxPixel || x > this.maxPixel) { draw = false; }
|
if (this.inValidRange(x, y)) {
|
||||||
if (y < -this.maxPixel || y > this.maxPixel) { draw = false; }
|
|
||||||
if (draw) {
|
|
||||||
node.setAttributeNS(null, "x", x);
|
node.setAttributeNS(null, "x", x);
|
||||||
node.setAttributeNS(null, "y", y);
|
node.setAttributeNS(null, "y", y);
|
||||||
node.setAttributeNS(null, "width", geometry.width / resolution);
|
node.setAttributeNS(null, "width", geometry.width / resolution);
|
||||||
@@ -437,7 +446,6 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
node.setAttributeNS(null, "width", 0);
|
node.setAttributeNS(null, "width", 0);
|
||||||
node.setAttributeNS(null, "height", 0);
|
node.setAttributeNS(null, "height", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@@ -541,11 +549,12 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
var resolution = this.getResolution();
|
var resolution = this.getResolution();
|
||||||
var x = (point.x / resolution + this.left);
|
var x = (point.x / resolution + this.left);
|
||||||
var y = (point.y / resolution - this.top);
|
var y = (point.y / resolution - this.top);
|
||||||
if (x < -this.maxPixel || x > this.maxPixel) { return false; }
|
|
||||||
if (y < -this.maxPixel || y > this.maxPixel) { return false; }
|
|
||||||
var string = x + "," + y;
|
|
||||||
return string;
|
|
||||||
|
|
||||||
|
if (this.inValidRange(x, y)) {
|
||||||
|
return x + "," + y;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
CLASS_NAME: "OpenLayers.Renderer.SVG"
|
CLASS_NAME: "OpenLayers.Renderer.SVG"
|
||||||
|
|||||||
Reference in New Issue
Block a user