I'm developing an application using OpenLayers-3.8.2 and geoserver-2.7.2. I defined a wfs layer as follow:
var url = "http://localhost:8084/geoserver/wfs?&service=WFS&" +
"version=1.1.0&request=GetFeature&typeName=Calk:Point&" +
"outputFormate=application/json";
var format = new ol.format.WFS();
source = new ol.source.Vector({
url: 'proxy.cgi?url=' + encodeURIComponent(u),
format: format
});
layer = new ol.layer.Vector({
title: 'Iran bound',
source: source
});
map.addLayer(layer);
The above code makes a WFS version 1.1.0 request. With this version it works fine, but when I change it to 1.0.0 or 2.0.0 it does not work. Server response for various versions are as follows:
Version: 1.0.0:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection xmlns="http://www.opengis.net/wfs"
xmlns:wfs="http://www.opengis.net/wfs" xmlns:Calk="http://itsme.calk.ir"
xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs http://localhost:8084/geoserver/schemas/wfs/1.0.0/WFS-basic.xsd
http://itsme.calk.ir http://localhost:8084/geoserver/wfs?service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=Calk%3APoint">
<gml:boundedBy>
<gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:coordinates xmlns:gml="http://www.opengis.net/gml" decimal="." cs="," ts=" ">27.195,28.9653 53.4167,60.8482</gml:coordinates>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<Calk:Point fid="Point.1">
<gml:boundedBy>
<gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:coordinates xmlns:gml="http://www.opengis.net/gml" decimal="." cs="," ts=" ">28.4101,41.5723 28.4101,41.5723</gml:coordinates>
</gml:Box>
</gml:boundedBy>
<Calk:the_geom>
<gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:coordinates xmlns:gml="http://www.opengis.net/gml" decimal="." cs="," ts=" ">28.4101,41.5723</gml:coordinates>
</gml:Point>
</Calk:the_geom>
<Calk:AREA>0.0</Calk:AREA>
<Calk:PERIMETER>0.0</Calk:PERIMETER>
<Calk:IR_CEN_>1</Calk:IR_CEN_>
<Calk:IR_CEN_ID>9</Calk:IR_CEN_ID>
<Calk:X_COORD>45.08176</Calk:X_COORD>
<Calk:Y_COORD>37.57299</Calk:Y_COORD>
<Calk:NAME>ORUMIEH-iran</Calk:NAME>
</Calk:Point>
</gml:featureMember>
...
</wfs:FeatureCollection>
Version 1.1.0:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:Calk="http://itsme.calk.ir"
xmlns:world="http://itsme.world.ir" xmlns:wfs="http://www.opengis.net/wfs"
xmlns:gml="http://www.opengis.net/gml" xmlns:iran="http://itsme.iran.ir"
xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
numberOfFeatures="25" timeStamp="2015-08-08T12:02:52.752Z"
xsi:schemaLocation="http://www.opengis.net/wfs
http://localhost:8084/geoserver/schemas/wfs/1.1.0/wfs.xsd
http://itsme.calk.ir http://localhost:8084/geoserver/wfs?service=WFS&version=1.1.0&request=DescribeFeatureType&typeName=Calk%3APoint">
<gml:boundedBy>
<gml:Envelope srsDimension="2" srsName="urn:x-ogc:def:crs:EPSG:4326">
<gml:lowerCorner>28.96533966064453 27.195</gml:lowerCorner>
<gml:upperCorner>60.8482 53.41667175292969</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<gml:featureMembers>
<Calk:Point gml:id="Point.1">
<gml:boundedBy>
<gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:4326" srsDimension="2">
<gml:lowerCorner>41.5723 28.4101</gml:lowerCorner>
<gml:upperCorner>41.5723 28.4101</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<Calk:the_geom>
<gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326" srsDimension="2">
<gml:pos>41.5723 28.4101</gml:pos>
</gml:Point>
</Calk:the_geom>
<Calk:AREA>0.0</Calk:AREA>
<Calk:PERIMETER>0.0</Calk:PERIMETER>
<Calk:IR_CEN_>1</Calk:IR_CEN_>
<Calk:IR_CEN_ID>9</Calk:IR_CEN_ID>
<Calk:X_COORD>45.08176</Calk:X_COORD>
<Calk:Y_COORD>37.57299</Calk:Y_COORD>
<Calk:NAME>ORUMIEH-iran</Calk:NAME>
</Calk:Point>
...
</gml:featureMembers>
</wfs:FeatureCollection>
Version 2.0.0:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:Calk="http://itsme.calk.ir" xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
numberMatched="25" numberReturned="25" timeStamp="2015-08-08T12:03:28.744Z"
xsi:schemaLocation="http://www.opengis.net/wfs/2.0
http://localhost:8084/geoserver/schemas/wfs/2.0/wfs.xsd
http://itsme.calk.ir http://localhost:8084/geoserver/wfs?service=WFS&version=2.0.0&request=DescribeFeatureType&typeName=Calk%3APoint
http://www.opengis.net/gml/3.2 http://localhost:8084/geoserver/schemas/gml/3.2.1/gml.xsd">
<wfs:boundedBy>
<gml:Envelope>
<gml:lowerCorner>28.96533966064453 27.195</gml:lowerCorner>
<gml:upperCorner>60.8482 53.41667175292969</gml:upperCorner>
</gml:Envelope>
</wfs:boundedBy>
<wfs:member>
<Calk:Point gml:id="Point.1">
<gml:boundedBy>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326" srsDimension="2">
<gml:lowerCorner>41.572266 28.410145</gml:lowerCorner>
<gml:upperCorner>41.572266 28.410145</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<Calk:the_geom>
<gml:Point srsName="urn:ogc:def:crs:EPSG::4326" srsDimension="2">
<gml:pos>41.572266 28.410145</gml:pos>
</gml:Point>
</Calk:the_geom>
<Calk:AREA>0.0</Calk:AREA>
<Calk:PERIMETER>0.0</Calk:PERIMETER>
<Calk:IR_CEN_>1</Calk:IR_CEN_>
<Calk:IR_CEN_ID>9</Calk:IR_CEN_ID>
<Calk:X_COORD>45.08176</Calk:X_COORD>
<Calk:Y_COORD>37.57299</Calk:Y_COORD>
<Calk:NAME>ORUMIEH-iran</Calk:NAME>
</Calk:Point>
...
</wfs:member>
</wfs:FeatureCollection>
Where is the problem?
Is it OpenLayers bug?
How do I fix it?
A another thing is that when I use wfs in version 1.1.0 and I modify some features, I save layer according to this tutorial, And in geoserver the points coordinates are displaced (mypoint.x in client side save as y in server side and vice versa). But when I create a new feature, It save correctly.
It's astounding and I'm confused. What do I do?
Best Answer
OL3.8.2 only supports WFS 1.1.0. See docs: