WFS-T通过Openlayers 3 / geoserver

时间:2016-03-12 13:01:24

标签: postgis openlayers-3 geoserver

我有一个简单的网络地图应用程序,尝试通过带有openlayers 3的WFS-T层向地图添加点。对于后端,我使用的是geoserver v2.8.0和postGIS数据库。我一直在关注dbauszus的精彩教程,我已经阅读了关于堆栈溢出的this问题,这指向了正确的方向,但我仍然缺少一些观点。 这有点奇怪,因为当我向地图添加一个点时,它会被转移到postGIS数据库中,设置ID并设置属性“test”但几何列为空。我假设我转移的xml不对,但我无法弄清楚是什么。

啊,不知道是否有帮助,但我的地理服务器上启用了CORS,而且我在本地网络服务器上运行了html网站。

目前我的代码如下:

var formatWFS = new ol.format.WFS();
var formatGML = new ol.format.GML({
    featureNS: 'vm',
    featurePrefix:'vm',
    featureType: 'GT_Projects',
    srsName: 'EPSG:3857'
});

var transactWFS = function(p,f) {
    switch(p) {
    case 'insert':
        node = formatWFS.writeTransaction([f],null,null,formatGML);
        console.log(node);
        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);
    console.log(str);
    $.ajax('http://geoserver-vmarquar.rhcloud.com:80/wfs',{
        type: 'POST',
        contentType: 'text/xml',
        dataType: 'xml',
        processData: false,
        data: str
        }).done();
    }

$('.btnMenu').on('click', function(event) {
$('.btnMenu').removeClass('orange');
$(this).addClass('orange');
map.removeInteraction(interaction);
select.getFeatures().clear();
map.removeInteraction(select);
switch($(this).attr('id')) {
// DRAW POINT
case 'btnDrawPoint':
    interaction = new ol.interaction.Draw({
        type: 'Point',
        source: layerVector.getSource()
    });
    map.addInteraction(interaction);
    interaction.on('drawend', function(e) {
        var feature = e.feature;
        feature.set('name', "test");
        // feature.set('geom', feature.getGeometry());
        transactWFS('insert',feature);

    });
    break;

提前致谢!

0 个答案:

没有答案