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:
@@ -335,15 +335,18 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
node.setAttributeNS(null, "r", style.pointRadius);
|
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") {
|
if(node.nodeName !== "svg") {
|
||||||
node.setAttributeNS(null, "transform",
|
node.setAttributeNS(null, "transform",
|
||||||
"rotate(" + style.rotation + " " + pos.x + " " +
|
"rotate(" + rotation + " " + pos.x + " " +
|
||||||
pos.y + ")");
|
pos.y + ")");
|
||||||
} else {
|
} else {
|
||||||
var symbolCenter = 0.5 * this.symbolSize[id] / 3;
|
var symbolCenter = 0.5 * this.symbolSize[id] / 3;
|
||||||
node.firstChild.setAttributeNS(null, "transform",
|
node.firstChild.setAttributeNS(null, "transform",
|
||||||
"rotate(" + style.rotation + " " + symbolCenter +
|
"rotate(" + rotation + " " + symbolCenter +
|
||||||
" " + symbolCenter + ")");
|
" " + symbolCenter + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,7 +294,9 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// additional rendering for rotated graphics or symbols
|
// 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) {
|
if (style.externalGraphic) {
|
||||||
this.graphicRotate(node, xOffset, yOffset, style);
|
this.graphicRotate(node, xOffset, yOffset, style);
|
||||||
// make the fill fully transparent, because we now have
|
// make the fill fully transparent, because we now have
|
||||||
@@ -303,7 +305,7 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
// in graphicRotate
|
// in graphicRotate
|
||||||
fill.opacity = 0;
|
fill.opacity = 0;
|
||||||
} else if(node._geometryClass === "OpenLayers.Geometry.Point") {
|
} 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) {
|
graphicRotate: function(node, xOffset, yOffset, style) {
|
||||||
var style = style || node._style;
|
var style = style || node._style;
|
||||||
var options = node._options;
|
var options = node._options;
|
||||||
|
var rotation = style.rotation || 0;
|
||||||
|
|
||||||
var aspectRatio, size;
|
var aspectRatio, size;
|
||||||
if (!(style.graphicWidth && style.graphicHeight)) {
|
if (!(style.graphicWidth && style.graphicHeight)) {
|
||||||
@@ -412,9 +415,9 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
|||||||
"progid:DXImageTransform.Microsoft.AlphaImageLoader(" +
|
"progid:DXImageTransform.Microsoft.AlphaImageLoader(" +
|
||||||
"src='', sizingMethod='scale')";
|
"src='', sizingMethod='scale')";
|
||||||
|
|
||||||
var rotation = style.rotation * Math.PI / 180;
|
var rot = rotation * Math.PI / 180;
|
||||||
var sintheta = Math.sin(rotation);
|
var sintheta = Math.sin(rot);
|
||||||
var costheta = Math.cos(rotation);
|
var costheta = Math.cos(rot);
|
||||||
|
|
||||||
// do the rotation on the image
|
// do the rotation on the image
|
||||||
var filter =
|
var filter =
|
||||||
|
|||||||
Reference in New Issue
Block a user