added labelXOffset and labelYOffset symbolizer properties. Thanks madair for the original patch, and thanks jlacroix for turning it into symbolizer properties so nicely. p=jlacroix, r=me (fixes #2312)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9755 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -33,7 +33,9 @@
|
|||||||
fontSize: "12px",
|
fontSize: "12px",
|
||||||
fontFamily: "Courier New, monospace",
|
fontFamily: "Courier New, monospace",
|
||||||
fontWeight: "bold",
|
fontWeight: "bold",
|
||||||
labelAlign: "${align}"
|
labelAlign: "${align}",
|
||||||
|
labelXOffset: "${xOffset}",
|
||||||
|
labelYOffset: "${yOffset}"
|
||||||
}}),
|
}}),
|
||||||
renderers: renderer
|
renderers: renderer
|
||||||
});
|
});
|
||||||
@@ -83,6 +85,22 @@
|
|||||||
favColor: 'black',
|
favColor: 'black',
|
||||||
align: 'rt'
|
align: 'rt'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Create a point feature to show the label offset options
|
||||||
|
var labelOffsetPoint = new OpenLayers.Geometry.Point(-101.04, 35.68);
|
||||||
|
var labelOffsetFeature = new OpenLayers.Feature.Vector(labelOffsetPoint);
|
||||||
|
labelOffsetFeature.attributes = {
|
||||||
|
name: "offset",
|
||||||
|
age: 22,
|
||||||
|
favColor: 'blue',
|
||||||
|
align: "cm",
|
||||||
|
// positive value moves the label to the right
|
||||||
|
xOffset: 50,
|
||||||
|
// negative value moves the label down
|
||||||
|
yOffset: -15
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
var nullFeature = new OpenLayers.Feature.Vector(null);
|
var nullFeature = new OpenLayers.Feature.Vector(null);
|
||||||
nullFeature.attributes = {
|
nullFeature.attributes = {
|
||||||
name: "toto is some text about the world",
|
name: "toto is some text about the world",
|
||||||
@@ -94,7 +112,7 @@
|
|||||||
map.addLayer(vectorLayer);
|
map.addLayer(vectorLayer);
|
||||||
vectorLayer.drawFeature(multiFeature);
|
vectorLayer.drawFeature(multiFeature);
|
||||||
map.setCenter(new OpenLayers.LonLat(point.x, point.y), 3);
|
map.setCenter(new OpenLayers.LonLat(point.x, point.y), 3);
|
||||||
vectorLayer.addFeatures([pointFeature, polygonFeature, multiFeature, nullFeature ]);
|
vectorLayer.addFeatures([pointFeature, polygonFeature, multiFeature, labelOffsetFeature, nullFeature ]);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -356,6 +356,8 @@ OpenLayers.Feature.Vector = OpenLayers.Class(OpenLayers.Feature, {
|
|||||||
* alignment. Valid values for horizontal alignment: "l"=left, "c"=center, "r"=right. Valid values for vertical
|
* alignment. Valid values for horizontal alignment: "l"=left, "c"=center, "r"=right. Valid values for vertical
|
||||||
* alignment: "t"=top, "m"=middle, "b"=bottom. Example values: "lt", "cm", "rb". The canvas renderer does not
|
* alignment: "t"=top, "m"=middle, "b"=bottom. Example values: "lt", "cm", "rb". The canvas renderer does not
|
||||||
* support vertical alignment, it will always use "b".
|
* support vertical alignment, it will always use "b".
|
||||||
|
* labelXOffset - {Number} Pixel offset along the positive x axis for displacing the label.
|
||||||
|
* labelYOffset - {Number} Pixel offset along the positive y axis for displacing the label.
|
||||||
* labelSelect - {Boolean} If set to true, labels will be selectable using SelectFeature or similar controls.
|
* labelSelect - {Boolean} If set to true, labels will be selectable using SelectFeature or similar controls.
|
||||||
* Default is false.
|
* Default is false.
|
||||||
* fontColor - {String} The font color for the label, to be provided like CSS.
|
* fontColor - {String} The font color for the label, to be provided like CSS.
|
||||||
|
|||||||
@@ -178,7 +178,14 @@ OpenLayers.Renderer = OpenLayers.Class({
|
|||||||
}
|
}
|
||||||
var rendered = this.drawGeometry(feature.geometry, style, feature.id);
|
var rendered = this.drawGeometry(feature.geometry, style, feature.id);
|
||||||
if(style.display != "none" && style.label && rendered !== false) {
|
if(style.display != "none" && style.label && rendered !== false) {
|
||||||
this.drawText(feature.id, style, feature.geometry.getCentroid());
|
var location = feature.geometry.getCentroid();
|
||||||
|
if(style.labelXOffset || style.labelYOffset) {
|
||||||
|
xOffset = isNaN(style.labelXOffset) ? 0 : style.labelXOffset;
|
||||||
|
yOffset = isNaN(style.labelYOffset) ? 0 : style.labelYOffset;
|
||||||
|
var res = this.getResolution();
|
||||||
|
location.move(xOffset*res, yOffset*res);
|
||||||
|
}
|
||||||
|
this.drawText(feature.id, style, location);
|
||||||
} else {
|
} else {
|
||||||
this.removeText(feature.id);
|
this.removeText(feature.id);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user