fixing rotation so previously rotated geometries will be rotated back if the rotation symbolizer attribute is not set any more. r=bartvde (closes #2500)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@10135 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
ahocevar
2010-03-20 21:33:36 +00:00
parent a5bb2b01b3
commit 35168dc219
2 changed files with 14 additions and 8 deletions

View File

@@ -335,15 +335,18 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
node.setAttributeNS(null, "r", style.pointRadius);
}
if (typeof style.rotation != "undefined" && pos) {
var rotation = style.rotation;
if (node._rotation !== rotation && pos) {
node._rotation = rotation;
rotation |= 0;
if(node.nodeName !== "svg") {
node.setAttributeNS(null, "transform",
"rotate(" + style.rotation + " " + pos.x + " " +
"rotate(" + rotation + " " + pos.x + " " +
pos.y + ")");
} else {
var symbolCenter = 0.5 * this.symbolSize[id] / 3;
node.firstChild.setAttributeNS(null, "transform",
"rotate(" + style.rotation + " " + symbolCenter +
"rotate(" + rotation + " " + symbolCenter +
" " + symbolCenter + ")");
}
}

View File

@@ -294,7 +294,9 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
}
// additional rendering for rotated graphics or symbols
if (typeof style.rotation != "undefined") {
var rotation = style.rotation;
if (rotation !== node._rotation) {
node._rotation = rotation;
if (style.externalGraphic) {
this.graphicRotate(node, xOffset, yOffset, style);
// make the fill fully transparent, because we now have
@@ -303,7 +305,7 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
// in graphicRotate
fill.opacity = 0;
} else if(node._geometryClass === "OpenLayers.Geometry.Point") {
node.style.rotation = style.rotation;
node.style.rotation = rotation || 0;
}
}
@@ -359,6 +361,7 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
graphicRotate: function(node, xOffset, yOffset, style) {
var style = style || node._style;
var options = node._options;
var rotation = style.rotation || 0;
var aspectRatio, size;
if (!(style.graphicWidth && style.graphicHeight)) {
@@ -412,9 +415,9 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
"progid:DXImageTransform.Microsoft.AlphaImageLoader(" +
"src='', sizingMethod='scale')";
var rotation = style.rotation * Math.PI / 180;
var sintheta = Math.sin(rotation);
var costheta = Math.cos(rotation);
var rot = rotation * Math.PI / 180;
var sintheta = Math.sin(rot);
var costheta = Math.cos(rot);
// do the rotation on the image
var filter =