<div dir="ltr">Thanks guys, appreciate this very much.<br><br>Regards,<br>Indika<br><br><div class="gmail_quote">2008/7/17 Fabio D&#39;Ovidio &lt;<a href="mailto:fabiodovidio@gmail.com">fabiodovidio@gmail.com</a>&gt;:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Here are samples using WFS-T and GeoServer.<br>
You can draw, modify and delete features (e.g. lines).<br>
I developed it for points, polygons, too and I have added FILTER on WFS requests passing a value in query string, configured also WMS GetFeatureInfo in order to query my WFS data on click.<br>
Now I am developing a module to create dinamically GeoRSS (including GML as geometries) by querying these features in geoserver as WFS Service and fill them with different colours respect some attribute values..<br>
<br>
Hope this help!<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;map = new OpenLayers.Map( &#39;map&#39; ,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { controls: [] , &#39;numZoomLevels&#39;:19});<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ol_wms = new OpenLayers.Layer.WMS( &quot;OpenLayers WMS&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;<a href="http://labs.metacarta.com/wms/vmap0" target="_blank">http://labs.metacarta.com/wms/vmap0</a>?&quot;, {layers: &#39;basic&#39;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var linea = new OpenLayers.Layer.WFS(<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Elementi lineari&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;/geoserver/wfs&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {typename: &#39;topp:linea&#39;},<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; typename: &#39;linea&#39;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; featureNS: &#39;<a href="http://www.openplans.org/topp" target="_blank">http://www.openplans.org/topp</a>&#39;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; extractAttributes: false<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!linea.writer) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; poligono.writer = new<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OpenLayers.Format.WFS({layerName:&#39;topp:linea&#39;},linea);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; linea.style.strokeColor = &quot;#0000ff&quot;;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.addLayers([ol_wms, linea]);<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var panel = new OpenLayers.Control.Panel(<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {displayClass: &#39;olControlEditingToolbar&#39;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var drawLine = new OpenLayers.Control.DrawFeature(<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; linea, OpenLayers.Handler.Path,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {displayClass: &#39;olControlDrawFeaturePath&#39;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawLine.featureAdded = function(feature) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; feature.layer.eraseFeatures([feature]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // cast to multilinestring<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; feature.geometry = new OpenLayers.Geometry.MultiLineString(<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; feature.geometry<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; feature.style.strokeColor = &quot;#ff0000&quot;;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; feature.style.strokeWidth = &quot;5&quot;;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; feature.style.strokeOpacity = &quot;0.75&quot;;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; feature.state = OpenLayers.State.INSERT;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; feature.layer.drawFeature(feature);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var modifyOptions = {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onModificationStart: function(feature) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OpenLayers.Console.log(&quot;start modifying&quot;, <a href="http://feature.id" target="_blank">feature.id</a>);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onModification: function(feature) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OpenLayers.Console.log(&quot;modified&quot;, <a href="http://feature.id" target="_blank">feature.id</a>);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onModificationEnd: function(feature) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OpenLayers.Console.log(&quot;end modifying&quot;, <a href="http://feature.id" target="_blank">feature.id</a>);<div class="Ih2E3d"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;feature.state = OpenLayers.State.UPDATE;<br></div>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onDelete: function(feature) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OpenLayers.Console.log(&quot;delete&quot;, <a href="http://feature.id" target="_blank">feature.id</a>); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;},<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onSelect: function(feature){<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OpenLayers.Console.log(&quot;select&quot;, <a href="http://feature.id" target="_blank">feature.id</a>); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;feature.state = OpenLayers.State.DELETE;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; controls = {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dellin: new OpenLayers.Control.SelectFeature(linea,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; modifyOptions),<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; modifylin: new OpenLayers.Control.ModifyFeature(linea,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;modifyOptions)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var key in controls) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.addControl(controls[key]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById(&#39;noneToggle&#39;).checked = true;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; panel.addControls(<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [new OpenLayers.Control.Navigation(), drawLine]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.addControl(panel);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.addControl(new OpenLayers.Control.LayerSwitcher());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.addControl(new OpenLayers.Control.MouseDefaults());<br>
 &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.addControl(new OpenLayers.Control.MousePosition());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.addControl(new OpenLayers.Control.PanZoomBar());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.zoomToExtent();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
 &nbsp; &nbsp; &nbsp;<br>
 &nbsp; &nbsp; &nbsp; function toggleControl(element) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(key in controls) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var control = controls[key];<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(element.value == key &amp;&amp; element.checked) {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; control.activate();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; control.deactivate();<div class="Ih2E3d"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
 &nbsp; &nbsp; &nbsp; }<br>
 &nbsp; &nbsp; &nbsp;<br>
<br>
-- <br>
Ing. Fabio D&#39;Ovidio<br>
<br>
INOVA Open Solutions s.r.l.<br>
Web : <a href="http://www.inovaos.it" target="_blank">http://www.inovaos.it</a><br>
Tel.: 081 197 57 600<br>
mail: <a href="mailto:fabiodovidio@gmail.com" target="_blank">fabiodovidio@gmail.com</a><br>
<br>
<br></div><div><div></div><div class="Wj3C7c">
Alexandre Dubé ha scritto:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Fabio,<br>
<br>
&nbsp;That would be most appreciated. &nbsp;Indika is also looking forward to see an example to get wfs-t features working.<br>
<br>
<br>
Fabio D&#39;Ovidio wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
If u want,<br>
I developed something like taht some times ago ...<br>
<br>
Alexandre Dubé ha scritto:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi everyone,<br>
<br>
 &nbsp;Does anybody have a WFS-T example to share ? &nbsp;I would like to see how to use a WFS layer, modify it and post my changes to a WFS server.<br>
<br>
 &nbsp;Thanks,<br>
<br>
 &nbsp;<br>
</blockquote>
<br>
</blockquote>
<br>
<br>
</blockquote>
<br>
</div></div></blockquote></div><br></div>