allow user to specify offsets for externalGraphic (closes #893)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@4268 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -263,6 +263,8 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, {
|
||||
* - graphicWidth,
|
||||
* - graphicHeight,
|
||||
* - graphicOpacity
|
||||
* - graphicXOffset
|
||||
* - graphicYOffset
|
||||
*/
|
||||
OpenLayers.Feature.Vector.style = {
|
||||
'default': {
|
||||
|
||||
@@ -184,8 +184,8 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
if (style.externalGraphic) {
|
||||
// remove old node
|
||||
var id = node.getAttributeNS(null, "id");
|
||||
var x = node.getAttributeNS(null, "cx");
|
||||
var y = node.getAttributeNS(null, "cy");
|
||||
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;
|
||||
@@ -206,10 +206,14 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
var height = style.graphicHeight || style.graphicWidth;
|
||||
width = width ? width : style.pointRadius*2;
|
||||
height = height ? height : style.pointRadius*2;
|
||||
var xOffset = (style.graphicXOffset != undefined) ?
|
||||
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-(.5*width).toFixed());
|
||||
node.setAttributeNS(null, "y", -y-(.5*height).toFixed());
|
||||
node.setAttributeNS(null, "x", (x + xOffset).toFixed());
|
||||
node.setAttributeNS(null, "y", (-y + yOffset).toFixed());
|
||||
node.setAttributeNS(null, "width", width);
|
||||
node.setAttributeNS(null, "height", height);
|
||||
node.setAttributeNS("http://www.w3.org/1999/xlink", "href", style.externalGraphic);
|
||||
|
||||
@@ -181,9 +181,15 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
var height = style.graphicHeight || style.graphicWidth;
|
||||
width = width ? width : style.pointRadius*2;
|
||||
height = height ? height : style.pointRadius*2;
|
||||
|
||||
var resolution = this.getResolution();
|
||||
node.style.left = (geometry.x/resolution-.5*width).toFixed();
|
||||
node.style.top = (geometry.y/resolution-.5*height).toFixed();
|
||||
var xOffset = (style.graphicXOffset != undefined) ?
|
||||
style.graphicXOffset : -(0.5 * width);
|
||||
var yOffset = (style.graphicYOffset != undefined) ?
|
||||
style.graphicYOffset : -(0.5 * height);
|
||||
|
||||
node.style.left = ((geometry.x/resolution)+xOffset).toFixed();
|
||||
node.style.top = ((geometry.y/resolution)-(yOffset+height)).toFixed();
|
||||
node.style.width = width;
|
||||
node.style.height = height;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user