Hi folks,
here are some code-snippets: I am working on a openlayers based geoEditor, just requiring a java-backend to split or join polygons:

  1. Loading data
     use a GML-Layer to get the data from your wfs-t server


     layers['schlaege']=new
     
OpenLayers.Layer.GML("Schläge","/geoserver164a/wfs?request=GetFeature&typeName=ms:schlaege&outputformat=text/xml;
     
subtype=gml/2.1.2",{layerName:'schlaege',typeName:'schlaege',outputFormat:'text/xml;
     
subtype=gml/2.1.2',formatOptions:{xy:false},styleMap:styleMaps['schlaege']});

  2. Manipulating data
     Use modifycontrol or drawfeatuer-control to edit or add new
     elements, use event such as featuremodified to set feature.state

     this.layer.events.on({"featuremodified":this.featureModified});
     GeoEditor.prototype.featureModified=function(object)
{ if(object.feature==null ||
     object.feature.state!=OpenLayers.State.INSERT)
             object.feature.state=OpenLayers.State.UPDATE;
     }

     Pay attention whether you want to delete a feature
     Remove feature from layer and store it into a seperate array
     within your layer

     GeoEditor.prototype.addDeletedFeature=function(layer,feature)
{ if(feature.fid!=null)
         {
             feature.state=OpenLayers.State.DELETE;
             if(layer.deletedFeatures==null)
                 layer.deletedFeatures=[];
             this.layer.deletedFeatures.push(feature);
         }
         else
             feature.destroy();
     }

  3. Storing
     You can use a Format.WFS to create the required xml-structe, but
     it is a bit tricky to configure, look at "layername"

     //Schlaege speichern
         var _writer=new
     
OpenLayers.Format.WFS({layerName:'ms:schlaege',featureNS:'http://mapserver.gis.umn.edu/mapserver',featureName:'schlaege',geometryName:'the_geom'},layers['schlaege']);
         //_writer.featureName='schlaege';
//tmpFeature=feature; var _tmpFeatures=layers['schlaege'].features;
     //Adding deleted features
         if(layers['schlaege'].deletedFeatures!=null)
{ for(_i=0;_i<layers['schlaege'].deletedFeatures.length;_i++)
             {
                 _tmpFeatures.push(layers['schlaege'].deletedFeatures[_i]);
} } var _gml=_writer.write(_tmpFeatures); //alert(_gml); //prompt("",_gml); var url = "/geoserver164a/wfs/"; new OpenLayers.Ajax.Request(url,
         {   method: 'post',
             postBody: _gml,
             asynchronous: false,
             onComplete: this.commitSuccessSchlaege,
             onFailure: this.commitFailure
} );
GeoEditor.prototype.commitSuccessSchlaege=function(request)
{ var response = request.responseText; var doc = request.responseXML; if (response.indexOf('SUCCESS') != -1) { //alert("Schlaege:"+OpenLayers.i18n("commitSuccess", {'response':response})); var _fidCounter=0; var _fids=doc.getElementsByTagName("FeatureId"); for(var i = 0; i < layers['schlaege'].features.length; i++) { if(layers['schlaege'].features[i].state==OpenLayers.State.INSERT) { layers['schlaege'].features[i].fid=_fids[_fidCounter].getAttribute("fid");
               _fidCounter++;
} layers['schlaege'].features[i].state = null;
           if(layers['schlaege'].deletedFeatures!=null)
{ for(_i=0;_i<layers['schlaege'].deletedFeatures.length;_i++)
               {
                   layers['schlaege'].deletedFeatures[_i].destroy();
               }
               layers['schlaege'].deletedFeatures.length=0;
} }
   } else if (response.indexOf('FAILED') != -1 ||
       response.indexOf('Exception') != -1) {
alert("Schlaege:"+OpenLayers.i18n("commitFailed", {'response':response})); } }

Alexandre Dubé schrieb:
Hi Fabio,

That would be most appreciated. Indika is also looking forward to see an example to get wfs-t features working.


Fabio D'Ovidio wrote:
If u want,
I developed something like taht some times ago ...

Alexandre Dubé ha scritto:
Hi everyone,

Does anybody have a WFS-T example to share ? I would like to see how to use a WFS layer, modify it and post my changes to a WFS server.

  Thanks,




--
Mit freundlichen Grüßen / Yours faithfully
Carsten Eider

Dipl. Inf. (FH)

Kompetenzzentrum für Innovative Informationssysteme

c/o Fachhochschhule Bingen / University of applied sciences Bingen

Berlinstraße 109
55411 Bingen

Tel: +49 (0) 6721 / 409-179
Fax: +49 (0) 6721 / 409-158
email: [EMAIL PROTECTED]
Internet: iis.fh-bingen.de
begin:vcard
fn:Carsten Eider
n:Eider;Carsten
org:Fachhochschule Bingen;Kompetenzzentrum innovative Informationssysteme
adr;quoted-printable:;;berlinstra=C3=9Fe 109;Bingen;RLP;55411;Deutschland
email;internet:[EMAIL PROTECTED]
title:Dipl.-Inf.
tel;work:067214090179
x-mozilla-html:TRUE
url:iis.fh-bingen.de
version:2.1
end:vcard

_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to