使用 OpenLayers 在 WFS 上保存编辑
Saving Edits on a WFS using OpenLayers
因此,通过考虑 this 制作的应用程序,我成功创建了具有编辑功能的 web 地图。
问题是,与 the working example 不同,编辑没有正确保存,所以每次刷新页面时,编辑似乎都丢失了。
奇怪的是,每次我画线时,我的数据库中都会创建新条目,但不会记录几何图形。
保存到WFS层的部分是:
var formatWFS = new ol.format.WFS();
var formatGML = new ol.format.GML({
featureNS: 'http://geoserver.org/bftchamber',
featureType: 'bft',
srsName: 'EPSG:27700'
});
var transactWFS = function(p,f) {
switch(p) {
case 'insert':
node = formatWFS.writeTransaction([f],null,null,formatGML);
break;
case 'update':
node = formatWFS.writeTransaction(null,[f],null,formatGML);
break;
case 'delete':
node = formatWFS.writeTransaction(null,null,[f],formatGML);
break;
}
s = new XMLSerializer();
str = s.serializeToString(node);
$.ajax('http://localhost:8080/geoserver/wfs',{
type: 'POST',
dataType: 'xml',
processData: false,
contentType: 'text/xml',
data: str
}).done();
}
Fiddle 在这里 https://jsfiddle.net/Luffydude/ex06jr1e/7/
事实证明,问题在于我的几何列需要称为几何,而 OpenLayers 仅适用于 EPSG:3857。
代码正确
因此,通过考虑 this 制作的应用程序,我成功创建了具有编辑功能的 web 地图。
问题是,与 the working example 不同,编辑没有正确保存,所以每次刷新页面时,编辑似乎都丢失了。
奇怪的是,每次我画线时,我的数据库中都会创建新条目,但不会记录几何图形。
保存到WFS层的部分是:
var formatWFS = new ol.format.WFS();
var formatGML = new ol.format.GML({
featureNS: 'http://geoserver.org/bftchamber',
featureType: 'bft',
srsName: 'EPSG:27700'
});
var transactWFS = function(p,f) {
switch(p) {
case 'insert':
node = formatWFS.writeTransaction([f],null,null,formatGML);
break;
case 'update':
node = formatWFS.writeTransaction(null,[f],null,formatGML);
break;
case 'delete':
node = formatWFS.writeTransaction(null,null,[f],formatGML);
break;
}
s = new XMLSerializer();
str = s.serializeToString(node);
$.ajax('http://localhost:8080/geoserver/wfs',{
type: 'POST',
dataType: 'xml',
processData: false,
contentType: 'text/xml',
data: str
}).done();
}
Fiddle 在这里 https://jsfiddle.net/Luffydude/ex06jr1e/7/
事实证明,问题在于我的几何列需要称为几何,而 OpenLayers 仅适用于 EPSG:3857。
代码正确