On Thursday, August 20, 2009, Eric Lemoine <[email protected]> wrote:
> On Wednesday, August 19, 2009, Michael Anderson <[email protected]> wrote:
>> Eric is correct. The modifyFeature control is using the select style. 
>> Setting the select style's label to an empty string does remove the label on 
>> the polygon feature being edited. But the vertices are still labeled. So it 
>> is still trying to label the vertices with an attribute value (from the 
>> default style?) and putting the empty string from the select style on the 
>> polygon.
>
> Right. This is because the modify feature control uses the "default"
> render intent for drawing the vertices (and the rotation and drag
> handles).
>
>
>>
>> Gives me an idea for a temporary hack though. I have a function that finds 
>> vertices. I can modify it to add the label attribute to the vertices and set 
>> them to empty strings. That should let me label the polygon while the 
>> vertices appear to not have labels. Should work as long as adding attributes 
>> to a vertex won't cause a problem I don't know about.
>
> How about using a context, with something like that in your style map:
>
>     "default": new OpenLayers.Style({
>             label: "${label}",
>             // other symbolizer properties here
>         }, {
>             context: {
>                  label: function(f) {
>                      if(f.geometry.CLASS_NAME !=
>                         "OpenLayers.Geometry.Point") {
>                           return f.attributes.label;
>                      } else {
>                           return "";
>                      }
>                  }
>             }
>     })
>

even better: have the context function check if the label attribute exists:

    context: {
        label: function(f) {
            return f.attributes.label != undefined ? f.attributes.label : "";
        }
    }
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to