[OpenLayers-Commits] r11697 - in trunk/openlayers/lib/OpenLayers: . Renderer

commits-20090109 at openlayers.org commits-20090109 at openlayers.org
Fri Mar 11 14:29:00 EST 2011


Author: ahocevar
Date: 2011-03-11 11:28:55 -0800 (Fri, 11 Mar 2011)
New Revision: 11697

Modified:
   trunk/openlayers/lib/OpenLayers/Map.js
   trunk/openlayers/lib/OpenLayers/Renderer/SVG.js
   trunk/openlayers/lib/OpenLayers/Renderer/SVG2.js
Log:
reverting r11645, and fixing the root of the reported problem. r=bartvde (closes #2392)

Modified: trunk/openlayers/lib/OpenLayers/Map.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Map.js	2011-03-11 18:34:53 UTC (rev 11696)
+++ trunk/openlayers/lib/OpenLayers/Map.js	2011-03-11 19:28:55 UTC (rev 11697)
@@ -510,12 +510,6 @@
             this.div = document.createElement("div");
             this.div.style.height = "1px";
             this.div.style.width = "1px";
-            
-            // Adding this to the DOM is a fix for Safari SVG rendering bugs;
-            // See #2392. On initial render(), it is removed from the dom,
-            // and a new div is added.
-            this.div.style.display = "none";
-            document.body.appendChild(this.div);
         }
         
         OpenLayers.Element.addClass(this.div, 'olMap');
@@ -650,11 +644,6 @@
      *     will be moved from the current to the new container.
      */
     render: function(div) {
-        // Fix for Safari SVG rendering bugs; See #2392
-        if(this.div && this.div.parentNode) {
-            this.div.parentNode.removeChild(this.div);
-        }
-
         this.div = OpenLayers.Util.getElement(div);
         OpenLayers.Element.addClass(this.div, 'olMap');
         this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);

Modified: trunk/openlayers/lib/OpenLayers/Renderer/SVG.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Renderer/SVG.js	2011-03-11 18:34:53 UTC (rev 11696)
+++ trunk/openlayers/lib/OpenLayers/Renderer/SVG.js	2011-03-11 19:28:55 UTC (rev 11697)
@@ -290,9 +290,9 @@
                 // the symbol viewBox is three times as large as the symbol
                 var offset = style.pointRadius * 3;
                 var size = offset * 2;
-                var id = this.importSymbol(style.graphicName);
+                var src = this.importSymbol(style.graphicName);
                 pos = this.getPosition(node);
-                widthFactor = this.symbolMetrics[id][0] * 3 / size;
+                widthFactor = this.symbolMetrics[src.id][0] * 3 / size;
                 
                 // remove the node from the dom before we modify it. This
                 // prevents various rendering issues in Safari and FF
@@ -308,7 +308,6 @@
                 // See e.g. ticket http://trac.osgeo.org/openlayers/ticket/2985 
                 // and this email thread
                 // http://osgeo-org.1803224.n2.nabble.com/Select-Control-Ctrl-click-on-Feature-with-a-graphicName-opens-new-browser-window-tc5846039.html
-                var src = document.getElementById(id);
                 node.firstChild && node.removeChild(node.firstChild);
                 node.appendChild(src.firstChild.cloneNode(true));
                 node.setAttributeNS(null, "viewBox", src.getAttributeNS(null, "viewBox"));
@@ -339,7 +338,7 @@
                         "rotate(" + rotation + " " + pos.x + " " + 
                         pos.y + ")"); 
                 } else {
-                    var metrics = this.symbolMetrics[id];
+                    var metrics = this.symbolMetrics[src.id];
                     node.firstChild.setAttributeNS(null, "transform", "rotate(" 
                         + rotation + " " 
                         + metrics[1] + " "
@@ -881,7 +880,7 @@
      * graphicName - {String} name of the symbol to import
      * 
      * Returns:
-     * {String} - id of the imported symbol
+     * {DOMElement} - the imported symbol
      */      
     importSymbol: function (graphicName)  {
         if (!this.defs) {
@@ -891,8 +890,9 @@
         var id = this.container.id + "-" + graphicName;
         
         // check if symbol already exists in the defs
-        if (document.getElementById(id) != null) {
-            return id;
+        var existing = document.getElementById(id)
+        if (existing != null) {
+            return existing;
         }
         
         var symbol = OpenLayers.Renderer.symbol[graphicName];
@@ -934,7 +934,7 @@
         ];
         
         this.defs.appendChild(symbolNode);
-        return symbolNode.id;
+        return symbolNode;
     },
     
     /**

Modified: trunk/openlayers/lib/OpenLayers/Renderer/SVG2.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Renderer/SVG2.js	2011-03-11 18:34:53 UTC (rev 11696)
+++ trunk/openlayers/lib/OpenLayers/Renderer/SVG2.js	2011-03-11 19:28:55 UTC (rev 11697)
@@ -217,8 +217,8 @@
                 // the symbol viewBox is three times as large as the symbol
                 var offset = style.pointRadius * 3 * resolution;
                 var size = offset * 2;
-                var id = this.importSymbol(style.graphicName);
-                widthFactor = this.symbolMetrics[id].size * 3 / size * resolution;
+                var src = this.importSymbol(style.graphicName);
+                widthFactor = this.symbolMetrics[src.id].size * 3 / size * resolution;
                 
                 // remove the node from the dom before we modify it. This
                 // prevents various rendering issues in Safari and FF
@@ -234,7 +234,6 @@
                 // See e.g. ticket http://trac.osgeo.org/openlayers/ticket/2985  
                 // and this email thread 
                 // http://osgeo-org.1803224.n2.nabble.com/Select-Control-Ctrl-click-on-Feature-with-a-graphicName-opens-new-browser-window-tc5846039.html 
-                var src = document.getElementById(id); 
                 node.firstChild && node.removeChild(node.firstChild); 
                 node.appendChild(src.firstChild.cloneNode(true)); 
                 node.setAttributeNS(null, "viewBox", src.getAttributeNS(null, "viewBox")); 
@@ -264,7 +263,7 @@
                         ["rotate(", rotation, node._x, node._y, ")"].join(" ")
                     ); 
                 } else {
-                    var metrics = this.symbolMetrics[id]; 
+                    var metrics = this.symbolMetrics[src.id]; 
                     node.firstChild.setAttributeNS(null, "transform",
                         ["rotate(", rotation, metrics.x, metrics.y, ")"].join(" ")
                     );
@@ -679,7 +678,7 @@
      * graphicName - {String} name of the symbol to import
      * 
      * Returns:
-     * {String} - id of the imported symbol
+     * {DOMElement} - the imported symbol
      */      
     importSymbol: function (graphicName)  {
         if (!this.defs) {
@@ -689,8 +688,9 @@
         var id = this.container.id + "-" + graphicName;
         
         // check if symbol already exists in the defs
-        if (document.getElementById(id) != null) {
-            return id;
+        var existing = document.getElementById(id);
+        if (existing != null) {
+            return existing;
         }
         
         var symbol = OpenLayers.Renderer.symbol[graphicName];
@@ -732,7 +732,7 @@
         };
         
         this.defs.appendChild(symbolNode);
-        return symbolNode.id;
+        return symbolNode;
     },
     
     /**



More information about the Commits mailing list