【发布时间】:2016-10-03 14:03:27
【问题描述】:
在阅读了非常好的tutorial on how to edit WFS with OpenLayers 之后,我尝试复制它,但使用来自 Geoserver 的我自己的 WFS 层。需要一些 Javascript 帮助来找出问题所在。
我成功地加载了 WFS 和我的底图,并设法让按钮显示出来。按钮显示正确,就像在working example from that page 中一样,但是由于某种原因,几何数据没有被保存。每次用户绘制东西时,都会在表格上创建一个新的 id,但其关联的几何列是空的
发帖的地方是:
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();
}
摆弄整个代码(如果它看起来很混乱,很抱歉,其中大部分来自工作示例2) https://jsfiddle.net/Luffydude/ex06jr1e/6/
应用如下所示:
此外,即使我在 QGIS 中加载 WFS 时它在泰晤士河上正确显示,但在我的应用程序中,即使我指定 EPSG 27700,它也会出现在海洋的其他地方(尽管目前这只是一个小烦恼)。
我现在的主要问题是如何让编辑按钮将用户编辑保存到 WFS 层?
【问题讨论】:
-
你遇到了什么错误?
-
@JoseHermosillaRodrigo 控制台没有错误,按钮不起作用
-
在示例 (dbauszus-webmaps.appspot.com/ol3-wfs-t) 中,您提供的按钮按预期工作。现在你说你的代码不起作用,但你没有提供你的代码。你指望我们怎么找出问题????试着制作一个小提琴来证明你的情况。
-
当我按下任何按钮时,我得到
ReferenceError: interaction is not defined map.removeInteraction(interaction); -
您的那段代码存在某种错误。不过,在初始化交互之前调用
map.removeInteraction(interaction);的声音逻辑。你的小提琴有点乱。我试着把它整理一下,但需要一些我现在没有的时间。对此感到抱歉。我建议使用 firebug 是为了解决任何 firebug 错误,然后看看你是否仍然遇到问题
标签: javascript jquery html openlayers-3 geoserver