made coordsize positive for vector renderers; seems to fixe some strange behavior in the vml renderer, and brings a performance gain by using this.size instead of calculating the size from extent and resolution every time. r=euzuro (closes #1157)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@7586 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -121,7 +121,7 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
// Set the viewbox -- the left/top will be pixels-dragged-since-res change,
|
// Set the viewbox -- the left/top will be pixels-dragged-since-res change,
|
||||||
// the width/height will be pixels.
|
// the width/height will be pixels.
|
||||||
var extentString = left + " " + top + " " +
|
var extentString = left + " " + top + " " +
|
||||||
extent.getWidth() / resolution + " " + extent.getHeight() / resolution;
|
this.size.w + " " + this.size.h;
|
||||||
//var extentString = extent.left / resolution + " " + -extent.top / resolution + " " +
|
//var extentString = extent.left / resolution + " " + -extent.top / resolution + " " +
|
||||||
this.rendererRoot.setAttributeNS(null, "viewBox", extentString);
|
this.rendererRoot.setAttributeNS(null, "viewBox", extentString);
|
||||||
},
|
},
|
||||||
@@ -154,7 +154,13 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
var nodeType = null;
|
var nodeType = null;
|
||||||
switch (geometry.CLASS_NAME) {
|
switch (geometry.CLASS_NAME) {
|
||||||
case "OpenLayers.Geometry.Point":
|
case "OpenLayers.Geometry.Point":
|
||||||
nodeType = style.externalGraphic ? "image" : "circle";
|
if (style.externalGraphic) {
|
||||||
|
nodeType = "image";
|
||||||
|
} else if (style.graphicName) {
|
||||||
|
nodeType = "use";
|
||||||
|
} else {
|
||||||
|
nodeType = "circle";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "OpenLayers.Geometry.Rectangle":
|
case "OpenLayers.Geometry.Rectangle":
|
||||||
nodeType = "rect";
|
nodeType = "rect";
|
||||||
|
|||||||
@@ -79,12 +79,15 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
var resolution = this.getResolution();
|
var resolution = this.getResolution();
|
||||||
|
|
||||||
var org = extent.left/resolution + " " +
|
var org = extent.left/resolution + " " +
|
||||||
extent.top/resolution;
|
(extent.top/resolution - this.size.h);
|
||||||
this.root.setAttribute("coordorigin", org);
|
this.root.setAttribute("coordorigin", org);
|
||||||
|
|
||||||
var size = extent.getWidth()/resolution + " " +
|
var size = this.size.w + " " + this.size.h;
|
||||||
-extent.getHeight()/resolution;
|
|
||||||
this.root.setAttribute("coordsize", size);
|
this.root.setAttribute("coordsize", size);
|
||||||
|
|
||||||
|
// flip the VML display Y axis upside down so it
|
||||||
|
// matches the display Y axis of the map
|
||||||
|
this.root.style.flip = "y";
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
@@ -120,7 +123,13 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
var nodeType = null;
|
var nodeType = null;
|
||||||
switch (geometry.CLASS_NAME) {
|
switch (geometry.CLASS_NAME) {
|
||||||
case "OpenLayers.Geometry.Point":
|
case "OpenLayers.Geometry.Point":
|
||||||
nodeType = style.externalGraphic ? "olv:rect" : "olv:oval";
|
if (style.externalGraphic) {
|
||||||
|
nodeType = "olv:rect";
|
||||||
|
} else if (style.graphicName) {
|
||||||
|
nodeType = "olv:group";
|
||||||
|
} else {
|
||||||
|
nodeType = "olv:oval";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "OpenLayers.Geometry.Rectangle":
|
case "OpenLayers.Geometry.Rectangle":
|
||||||
nodeType = "olv:rect";
|
nodeType = "olv:rect";
|
||||||
|
|||||||
@@ -59,6 +59,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var r = new OpenLayers.Renderer.SVG(document.body);
|
var r = new OpenLayers.Renderer.SVG(document.body);
|
||||||
|
r.setSize(new OpenLayers.Size(4,4));
|
||||||
r.map = {
|
r.map = {
|
||||||
getResolution: function() {
|
getResolution: function() {
|
||||||
return 0.5;
|
return 0.5;
|
||||||
@@ -78,7 +79,7 @@
|
|||||||
// test extent changes
|
// test extent changes
|
||||||
var extent = new OpenLayers.Bounds(4,3,2,1);
|
var extent = new OpenLayers.Bounds(4,3,2,1);
|
||||||
r.setExtent(extent);
|
r.setExtent(extent);
|
||||||
t.eq(r.rendererRoot.getAttributeNS(null, "viewBox"), "6 6 -4 -4", "rendererRoot viewBox is correct after a new setExtent");
|
t.eq(r.rendererRoot.getAttributeNS(null, "viewBox"), "6 6 4 4", "rendererRoot viewBox is correct after a new setExtent");
|
||||||
|
|
||||||
OpenLayers.Renderer.Elements.prototype.setExtent =
|
OpenLayers.Renderer.Elements.prototype.setExtent =
|
||||||
OpenLayers.Renderer.Elements.prototype._setExtent;
|
OpenLayers.Renderer.Elements.prototype._setExtent;
|
||||||
|
|||||||
@@ -59,6 +59,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var r = new OpenLayers.Renderer.VML(document.body);
|
var r = new OpenLayers.Renderer.VML(document.body);
|
||||||
|
r.setSize(new OpenLayers.Size(4,4));
|
||||||
r.map = {
|
r.map = {
|
||||||
getResolution: function() {
|
getResolution: function() {
|
||||||
return 0.5;
|
return 0.5;
|
||||||
@@ -70,8 +71,8 @@
|
|||||||
|
|
||||||
t.eq(g_SetExtent, true, "Elements.setExtent() called");
|
t.eq(g_SetExtent, true, "Elements.setExtent() called");
|
||||||
|
|
||||||
t.ok(r.root.coordorigin == "2,8", "coordorigin is correct");
|
t.ok(r.root.coordorigin == "2,4", "coordorigin is correct");
|
||||||
t.ok(r.root.coordsize == "4,-4", "coordsize is correct");
|
t.ok(r.root.coordsize == "4,4", "coordsize is correct");
|
||||||
|
|
||||||
OpenLayers.Renderer.Elements.prototype.setExtent =
|
OpenLayers.Renderer.Elements.prototype.setExtent =
|
||||||
OpenLayers.Renderer.Elements.prototype._setExtent;
|
OpenLayers.Renderer.Elements.prototype._setExtent;
|
||||||
|
|||||||
Reference in New Issue
Block a user