Hi list,
I'm facing a strange behaviour regarding labelling features, in this case
polygons, and the rendering intents of my style map. I have some features
loaded into an OpenLayers.Layer.Vector layer. This layer has a style map
definition:
var styles = new OpenLayers.StyleMap({
"default": new OpenLayers.Style(null,{
rules: [
new OpenLayers.Rule({
symbolizer: {
"Point": {
pointRadius: 5,
graphicName: "circle",
fillColor: "#FFA500",
fillOpacity: 0.25,
strokeWidth: 1,
strokeOpacity: 1,
strokeColor: "#FFA500"
},
"Line": {
strokeWidth: 3,
strokeOpacity: 1,
strokeColor: "#FFA500"
},
"Polygon": {
strokeWidth: 2,
strokeOpacity: 1,
strokeColor: "#FFA500",
fillColor: "#FFA500"
}
}
})
]
}),
"select": new OpenLayers.Style({
strokeColor: "#00ccff",
strokeWidth: 4,
strokeDashstyle: "solid"
}),
"temporary": new OpenLayers.Style(null, {
rules: [
new OpenLayers.Rule({
symbolizer: {
"Point": {
pointRadius: 5,
graphicName: "square",
fillColor: "white",
fillOpacity: 0.25,
strokeWidth: 1,
strokeOpacity: 1,
strokeColor: "#333333"
},
"Line": {
strokeWidth: 3,
strokeOpacity: 1,
strokeColor: "#00ccff"
},
"Polygon": {
strokeWidth: 2,
strokeOpacity: 1,
strokeColor: "#0000ff",
fillColor: "#0000ff"
}
}
})
]
})
});
I've developed a function to label the features dynamically:
labelFeatures: function (etiquetas){
//label : "name: ${name}\n\nage: ${age}",
var label="";
for (var i=0;i<=etiquetas.length-1;i++){
label += "${" + etiquetas[i] + "}-";
}
label = label.substring(0,label.length-1);
var pila = this.map.getLayersByName("pila")[0];
for (var i=0;i<=pila.styleMap.styles["default"].rules.length-1;i++){
if (pila.styleMap.styles["default"].rules[i].symbolizer.Polygon){
pila.styleMap.styles["default"].rules[i].symbolizer.Polygon.label = label;
pila.styleMap.styles["default"].rules[i].symbolizer.Polygon.labelAlign =
"rt";
pila.styleMap.styles["default"].rules[i].symbolizer.Polygon.fontSize =
"14px";
pila.styleMap.styles["default"].rules[i].symbolizer.Polygon.fontWeight =
"bold";
}
if (pila.styleMap.styles["default"].rules[i].symbolizer.Line){
pila.styleMap.styles["default"].rules[i].symbolizer.Line.label = label;
pila.styleMap.styles["default"].rules[i].symbolizer.Line.labelAlign = "rt";
pila.styleMap.styles["default"].rules[i].symbolizer.Line.fontSize = "14px";
pila.styleMap.styles["default"].rules[i].symbolizer.Line.fontWeight =
"bold";
}
if (pila.styleMap.styles["default"].rules[i].symbolizer.Point){
pila.styleMap.styles["default"].rules[i].symbolizer.Point.label = label;
pila.styleMap.styles["default"].rules[i].symbolizer.Point.labelAlign = "rt";
pila.styleMap.styles["default"].rules[i].symbolizer.Point.fontSize = "14px";
pila.styleMap.styles["default"].rules[i].symbolizer.Point.fontWeight =
"bold";
}
pila.styleMap.styles["default"].defaultStyle.label = label;
}
}
I also have the highlight control added to the map.
Then thing is that once the features are loaded and rendered the label appears
correctly, buy whenever I hover the pointer over the feature the correct label
disappears and I get the substitution value for the label, i.e, something like
${myLabel}. Furthermore, whenever I select the feature I get an 'undefined'
label over all the feature's vertices. And finally another weird behaviour is
that if I try to draw a new feature with the DrawPolygon control I get the
following error:
Uncaught TypeError: Cannot read property 'x' of null OpenLayers.js:614
OpenLayers.Renderer.SVG.OpenLayers.Class.drawText OpenLayers.js:614
OpenLayers.Renderer.OpenLayers.Class.drawFeature OpenLayers.js:292
OpenLayers.Layer.Vector.OpenLayers.Class.drawFeature OpenLayers.js:1578
OpenLayers.Layer.Vector.OpenLayers.Class.addFeatures OpenLayers.js:1565
OpenLayers.Handler.Polygon.OpenLayers.Class.createFeature OpenLayers.js:1994
OpenLayers.Handler.Path.OpenLayers.Class.mousedown OpenLayers.js:1846
OpenLayers.Events.OpenLayers.Class.triggerEvent OpenLayers.js:559
OpenLayers.Events.OpenLayers.Class.handleBrowserEvent OpenLayers.js:562
(anonymous function)
I'm working with OpenLayers 2.9
I don't really know what to do. Any help is much appreciated.
Thanks in advance.
Regards,
David Alda Fernández de Lezea
UNIDAD DE EMPRENDIMIENTO Y DESARROLLO RURAL
Area de Sistemas de Información Geográfica, Planificación Territorial y Forestal
Granja Modelo s/n
01192 Arkaute Araba
T 627923170 F 945 003 290
[email protected] <blocked::mailto:[email protected]> | www.hazi.es
<blocked::http://www.hazi.es/>
<blocked::http://www.hazi.es/>
********************* LEGE OHARRA ******************* AVISO LEGAL
******************* DISCLAIMER ******************
Mezu hau pertsonala eta isilpekoa da eta baimenik gabeko erabilera debekatua
dago legalki. Jasotzailea ez bazara ezabatu mezua, bidali eta kontserbatu gabe.
Este mensaje es personal y confidencial y su uso no autorizado está prohibido
legalmente. Si usted no es el destinatario, proceda a borrarlo, sin reenviarlo
ni conservarlo.
This message is personal and confidential, unauthorised use is legally
prohibited. If you are not the intended recipient, delete it without resending
or backing it.
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users