我試圖上的OpenLayers WFS-T 3用下面的代碼:的OpenLayers 3 - WFS-T:幾何領域的變化名
var formatWFS = new ol.format.WFS();
var formatGML = new ol.format.GML({
featureNS: 'http://argeomatica.com',
featureType: 'playa_sample',
srsName: 'EPSG:3857'
});
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('https://gsx.geolytix.net/geoserver/geolytix_wfs',{
type: 'POST',
dataType: 'xml',
processData: false,
contentType: 'text/xml',
data: str
}).done();
}
然而,當我運行一個更新事務(AJAX調用),它將幾何列作爲「幾何」發送。我需要改變它是大寫的 「GEOM」:
...
<Property>
<Name>geometry</Name>
...
應該是: ...
<Property>
<Name>GEOM</Name>
...
我試着用啊設置功能我找到的idden屬性(geometryName_):
f.geometryName_ =「GEOM」;
但這並不奏效。任何幫助改變功能傳遞「GEOM」到ajax調用將不勝感激。由於
更新#1
正如巴特建議,我加setGeometryName:
case 'update':
f.setGeometryName("GEOM");
node = formatWFS.writeTransaction(null,[f],null,formatGML);
break;
但引起的OpenLayers 3個JS的錯誤了:
ol.interaction.Modify.prototype.addFeature_
..
if (geometry.getType() in this.SEGMENT_WRITERS) <-- errors out here
錯誤:無法獲取屬性getType對象爲空
您需要在功能上使用setGeometryName。這將通過格式獲取。 – bartvde
巴特,嘗試了你的建議,但沒有奏效。見上面的更新#1。 –
您需要確保在特徵的值中幾何體在該關鍵點下。設置名稱後,feature.getGeometry()會產生什麼結果? – bartvde