[OpenLayers-Users] wfs-t insert alphanumeric values

Andreas Hocevar andreas.hocevar at gmail.com
Mon Jun 30 11:18:08 EDT 2008


Hi Fabio,

On Mon, Jun 30, 2008 at 4:41 PM, Fabio D'Ovidio <fabiodovidio at gmail.com> wrote:
> Hi!
> After drwing my feature trought openlayers and wfs-t protocol in
> Geoserver, I'd like to update alphanumeric fileds of that feature
> reading some variables in query string.

Wouldn't it save you a roundtrip if you set the attribute values right
after drawing the feature, before posting it to the server? All you
have to do is give your feature the according attributes, e.g.:

features.attributes = {
    "importo": "my query_string variable value",
    "nome": "my query_string variable value"
}

> // Javascript function
>  function getQueryVariable(variable) {
>        var query = window.location.search.substring(1);
>        var vars = query.split("&");
>         for (var i=0;i<vars.length;i++) {
>         var pair = vars[i].split("=");
>         if (pair[0] == variable) {
>         return pair[1];
>     }
>   }
>  alert('Query Variable ' + variable + ' not found');
>   }

This is much simpler with OpenLayers.Util.getParameters:

If the query string of your url looks like
?importo=1&nome=my query string nome

you can simply say

feature.attributes = OpenLayers.Util.getParameters();

> // wfs-t update request: "importo" and "nome" will be my query_string
> variables....
>
> <wfs:Transaction service="WFS" version="1.0.0"
>  xmlns:topp="http://www.openplans.org/topp"
>  xmlns:ogc="http://www.opengis.net/ogc"
>  xmlns:wfs="http://www.opengis.net/wfs">
>  <wfs:Update typeName="topp:poligono">
>    <wfs:Property>
>      <wfs:Name>nome</wfs:Name>
>      <wfs:Value>"my query_string variable value"</wfs:Value>
>
>    </wfs:Property>
>    <wfs:Property>
>      <wfs:Name>importo</wfs:Name>
>      <wfs:Value>"my query_string variable value"</wfs:Value>
>
>    </wfs:Property>
>    <ogc:Filter>
>      <ogc:FeatureId fid="poligono.1"/>
>    </ogc:Filter>
>  </wfs:Update>
> </wfs:Transaction>
>
> How can I do it?

No need to code it like that. It's very simple, assuming you have your
wfs layer set up like in
http://www.openlayers.org/dev/examples/wfst.html:

feature.state = OpenLayers.State.UPDATE;
wfs.commit();

Regards,
Andreas.



More information about the Users mailing list