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);
|
||||
}
|
||||
|
||||
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 + ")");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 =
|
||||
|
||||
Reference in New Issue
Block a user