[OpenLayers-Users] How to call a function that sets attributes for features added by drawfeature-control

Max Stephan x.zam at gmx.net
Wed Sep 2 04:02:45 EDT 2009


Hi Alexandre,

good idea. I´m now assigning an attribute to the feature I´ve added via the
function that is triggered when a feature has been added. It contains a
hexadecimal-color (depending on the colorvalue that is chosen in
dropdown-menu). In the styleMap I define the fillColor as "${fillColor}".
This works perfectly.

Thx for your help
Max Stephan

Alexandre Dube wrote:
> 
> Hi Max,
> 
>   I'm not sure about what could be the best approach.  My guess would be 
> to define a stylemap with your default 'default' and 'select' styles for 
> newly added features, then when your user choose a color for the 
> feature, add a rule based on the feature id.
> 
>   Have you checked : http://trac.openlayers.org/wiki/Styles ?  It could 
> helps to learn more about this.
> 
>   Also, an example with unique rules : 
> http://openlayers.org/dev/examples/styles-unique.html
> 
> Regards,
> 
> Alexandre
> 
> Max Stephan wrote:
>> Hi Alexandre,
>>
>> I got it working now. The Problem was that in the function that was
>> triggered by the featureadded-event I tried something like feature.id and
>> not evt.feature.id.
>> I registered the event via
>> "drawFeatureControlName.events.register("featureadded", ' ' , function)".
>>
>> But, as always, one problem solved and another one evolves. As said
>> before I
>> want to apply a user-customizable style to each feature added. I´ve done
>> this for example via "evt.feature.style = {fillcolor: "#FF9933",
>> pointRadius: 10, strokeColor: 'black'}" and after that I´m redrawing the
>> feature via "vectorLayer.drawFeature(evt.feature)". This works and the
>> point
>> is symbolized in the planned way. But when I select one of those points
>> on
>> the map the radius shrinks (I guess to the size of the default-style for
>> point-Vectorfeatures) and the stroke is gone. Even when I unselect the
>> feature it stays in this changed style. Now I tried to apply a stylemap
>> with
>> default- and selectStyle to the feature but that didn´t have any effect
>> (the
>> points stayed in their default-orange-style).
>>
>> Any idea how to solve this problem? Rulebased styling via a layerwide
>> stylemap is no option cause as said above the user should be able to
>> choose
>> color etc. independently.
>>
>> Greets and thx for your help
>> Max Stephan
>>
>> Alexandre Dube wrote:
>>   
>>> Hi Max,
>>>
>>>   Here's an old demo that could help you for some of your needs :
>>>
>>>   http://dev4.mapgears.com/bdga/bdgaWFS-T.html
>>>
>>>   Simply click on a feature.  This demonstrate a way to edit feature's 
>>> attributes in a form.  If your data is stored in a DB, you don't need to 
>>> take care of the id manually.  The DB will automatically generate one.
>>>
>>>   The example is using WFS-T to TinyOWS connected to a PostGIS DB.
>>>
>>> Best of luck,
>>>
>>> Alexandre
>>>
>>> Max Stephan wrote:
>>>     
>>>> Hi list,
>>>>
>>>> I´m actually implementing a drawfeature-control for my web-GIS.
>>>> Everything´s
>>>> working fine so far but now I want to add a little more functionality:
>>>> - the user should be able to specify the appearance of the features
>>>> he´s
>>>> adding. This shall only have an effect on the features he´s adding
>>>> after
>>>> specifying the style (so a change of the general vectorlayer-Style is
>>>> not
>>>> useful)
>>>> - each feature should get a unique ID whose format I´d like to specify
>>>> and
>>>> which is generated by a script-wide counter for example
>>>>
>>>> For both of this cases I thought of the event featureadded. But I´m
>>>> having
>>>> some trouble with it. Here´s what I tried:
>>>>
>>>> 1. event-listener on the layer to which the features are added:
>>>>
>>>> example: vectorLayer.events.register('featureadded', vectorlayer,
>>>> testFunction);
>>>>
>>>> 2. event-listener on the handler for drawfeature-control (same as above
>>>> but
>>>> with vectorLayer being replaced by the drawfeature-control)
>>>>
>>>> 3. event-listener in this form:
>>>>
>>>> vectorLayer.events.on("featureadded": testFunction, ...);
>>>>
>>>> The testFunction is meant to specify the attributes like style, id etc.
>>>> on
>>>> the feature that was added. The function is executed (tested it with an
>>>> alert).
>>>>
>>>> The problem is that it´s not possible to select features on this layer
>>>> (the
>>>> other vectorlayers are still working) when using the
>>>> featureadded-listener.
>>>> But I need to be able to select features to modify it´s attributes
>>>> later
>>>> on
>>>> or to clear them via a form.
>>>>
>>>> I also thought of using the create-callback of the point-handler but
>>>> don´t
>>>> know how to implement it.
>>>>
>>>> Any ideas and help is appreciated.
>>>> Thx in advance
>>>> Max Stephan
>>>>   
>>>>       
>>> -- 
>>> Alexandre Dubé
>>> Mapgears
>>> www.mapgears.com
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at openlayers.org
>>> http://openlayers.org/mailman/listinfo/users
>>>
>>>
>>>     
>>
>>   
> 
> 
> -- 
> Alexandre Dubé
> Mapgears
> www.mapgears.com
> 
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
> 
> 

-- 
View this message in context: http://n2.nabble.com/How-to-call-a-function-that-sets-attributes-for-features-added-by-drawfeature-control-tp3559596p3565336.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.



More information about the Users mailing list