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 da...@hazi.es <blocked::mailto:correo_electron...@hazi.es> | 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 us...@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/openlayers-users