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

Reply via email to