Fixes and performance improvements to VML renderer problems with
externalGraphic, diligently filed, investigated, and fixed by The great and powerful Oz, er, Andreas, who is becoming my new vector rendering hero. (Closes #1172) git-svn-id: http://svn.openlayers.org/trunk/openlayers@5323 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -147,15 +147,16 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
*
|
||||
* Parameters:
|
||||
* geometry - {<OpenLayers.Geometry>}
|
||||
* style - {Object}
|
||||
*
|
||||
* Returns:
|
||||
* {String} The corresponding node type for the specified geometry
|
||||
*/
|
||||
getNodeType: function(geometry) {
|
||||
getNodeType: function(geometry, style) {
|
||||
var nodeType = null;
|
||||
switch (geometry.CLASS_NAME) {
|
||||
case "OpenLayers.Geometry.Point":
|
||||
nodeType = "circle";
|
||||
nodeType = style.externalGraphic ? "image" : "circle";
|
||||
break;
|
||||
case "OpenLayers.Geometry.Rectangle":
|
||||
nodeType = "rect";
|
||||
@@ -196,21 +197,9 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
options = options || node._options;
|
||||
if (node._geometryClass == "OpenLayers.Geometry.Point") {
|
||||
if (style.externalGraphic) {
|
||||
// remove old node
|
||||
var id = node.getAttributeNS(null, "id");
|
||||
var x = parseFloat(node.getAttributeNS(null, "cx"));
|
||||
var y = parseFloat(node.getAttributeNS(null, "cy"));
|
||||
var _featureId = node._featureId;
|
||||
var _geometryClass = node._geometryClass;
|
||||
var _style = node._style;
|
||||
|
||||
// create new image node
|
||||
node = this.createNode("image", id);
|
||||
node._featureId = _featureId;
|
||||
node._geometryClass = _geometryClass;
|
||||
node._style = _style;
|
||||
|
||||
// now style the new node
|
||||
if (style.graphicWidth && style.graphicHeight) {
|
||||
node.setAttributeNS(null, "preserveAspectRatio", "none");
|
||||
}
|
||||
@@ -222,6 +211,7 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
style.graphicXOffset : -(0.5 * width);
|
||||
var yOffset = (style.graphicYOffset != undefined) ?
|
||||
style.graphicYOffset : -(0.5 * height);
|
||||
|
||||
var opacity = style.graphicOpacity || style.fillOpacity;
|
||||
|
||||
node.setAttributeNS(null, "x", (x + xOffset).toFixed());
|
||||
|
||||
Reference in New Issue
Block a user