Mehr

Wie stelle ich die Version von wfs-t in openlayers-3 ein?

Wie stelle ich die Version von wfs-t in openlayers-3 ein?


Ich benutzewfs-tin OpenLayers-3.6 entsprechend hier. Ich habe eine Funktion geändert und dann eine wfs-Anfrage wie folgt gesendet:

var-Eigenschaften = modifiziertFeature.getProperties(); lösche properties.boundedBy; newFeature = new ol.Feature(Eigenschaften); newFeature.setId(features[i].getId()); var node = wfs.writeTransaction(null, [newFeature], null, { featureType: "Calk:Point", //Geoserver Layer Name featureNS: "http://itsme.calk.ir", // Workspace Namespace URI bearbeiten srsName Edit : "EPSG:4326"}); var s = neuer XMLSerializer(); var url = "http://localhost:8084/geoserver/wfs"; Ext.Ajax.request({ url: 'proxy.cgi?url=' + encodeURIComponent(url), method: 'POST', xmlData: s.serializeToString(node), headers: { 'Content-Type': 'text/ xml' }, Erfolg: function(response_) { response = response_;} });

Die Standardversion, dieOpenLayersfunktioniert ist "1.1.0", In dieser Einstellung möchte ich mit der Version "2.0.0" arbeiten. Wie kann ich die Version einstellen?


Wenn man sich den Quellcode anschaut,ol.format.WFSKonstruktor kann so angepasst werden, dass er verschiedene WFS-Formate unterstützt (mitgmlFormat, undschemaStandort), aber es beeinflusst nur den Leseprozess, nicht seine,schreibenTransaktionMethode. Wie Sie im folgenden Code sehen können, ist die Methode fest codiert, um nur WFS 1.1.0-Transaktionen zu unterstützen. Es gibt eine Mail auf der ol3-dev-Mailingliste, die besagt, dass keine Unterstützung für WFS 2.0 geplant ist, aber sie ist ziemlich alt.

/** * Format als WFS 'Transaction' kodieren und die Node. * * @param {Array.} inserts Die einzufügenden Features. * @param {Array.} updates Die zu aktualisierenden Features. * @param {Array.} deletes Die zu löschenden Features. * @param {olx.format.WFSWriteTransactionOptions} Optionen Schreiboptionen. * @return {Node} Ergebnis. * @api stable */ ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes, options) { var objectStack = []; var node = ol.xml.createElementNS('http://www.opengis.net/wfs', 'Transaction'); node.setAttribute('service', 'WFS'); node.setAttribute('version', '1.1.0'); var baseObj, obj; if (goog.isDef(Optionen)) { baseObj = goog.isDef(options.gmlOptions) ? options.gmlOptions: {}; if (goog.isDef(options.handle)) { node.setAttribute('handle', options.handle); } } ol.xml.setAttributeNS(node, 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:schemaLocation', this.schemaLocation_); if (goog.isDefAndNotNull(inserts)) { obj = {node: node, featureNS: options.featureNS, featureType: options.featureType, featurePrefix: options.featurePrefix}; goog.object.extend(obj, baseObj); ol.xml.pushSerializeAndPop(obj, ol.format.WFS.TRANSACTION_SERIALIZERS_, ol.xml.makeSimpleNodeFactory('Einfügen'), Einfügungen, objectStack); } if (goog.isDefAndNotNull(updates)) { obj = {node: node, featureNS: options.featureNS, featureType: options.featureType, featurePrefix: options.featurePrefix}; goog.object.extend(obj, baseObj); ol.xml.pushSerializeAndPop(obj, ol.format.WFS.TRANSACTION_SERIALIZERS_, ol.xml.makeSimpleNodeFactory('Update'), Updates, objectStack); } if (goog.isDefAndNotNull(deletes)) { ol.xml.pushSerializeAndPop({node: node, featureNS: options.featureNS, featureType: options.featureType, featurePrefix: options.featurePrefix}, ol.format.WFS.TRANSACTION_SERIALIZERS_, ol .xml.makeSimpleNodeFactory('Delete'), deletes, objectStack); } if (goog.isDef(options.nativeElements)) { ol.xml.pushSerializeAndPop({node: node, featureNS: options.featureNS, featureType: options.featureType, featurePrefix: options.featurePrefix}, ol.format.WFS.TRANSACTION_SERIALIZERS_ , ol.xml.makeSimpleNodeFactory('Native'), options.nativeElements, objectStack); } Rückkehrknoten; };

Schau das Video: OpenLayers Introduction for Beginners