首页 文章

OpenLayers:为地理服务器节省了额外的点数

提问于
浏览
2

我想添加一个点,然后使用wfs-t将此保存到db .

我使用Openlayers和GeoServer .

saveStrategy = new OpenLayers.Strategy.Save();

wfs = new OpenLayers.Layer.Vector(
"WFS Vectore",
{
    strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy],
    projection: new OpenLayers.Projection("EPSG:4326"),
    protocol: new OpenLayers.Protocol.WFS({
        version: "1.1.0",
        srsName: "EPSG:4326",
        url: "http://localhost:8080/geoserver/iran/wms?service=WFS",
        featureType: "population_utf-8",
        featureNS: "http://iran.kadaster.org",
        geometryName: "geom"
    })
});

我用两种方法添加点:

1 .

wfs.addFeatures([new OpenLayers.Feature.Vector(
    new OpenLayers.Geometry.Point(
        (Math.floor(Math.random() * 360) - 180),
        (Math.floor(Math.random() * 180) - 90)
    )
)]);
saveStrategy.save();

2 .

var drawFeatureController = new OpenLayers.Control.DrawFeature(wfs, OpenLayers.Handler.Point);

然后用鼠标添加一个点 .

saveStrategy.save();

第二种方法工作第一种方法不起作用 .

我需要第一种方法 .

我能怎么做?

1 回答

  • 1

    当您使用 new OpenLayers.Control.DrawFeature(wfs, OpenLayers.Handler.Point) 添加一个点时,默认情况下功能状态设置为"Insert"但是当您使用 vectorLayer.addFeatures() 命令添加一个点时,该功能状态为null .

    当OpenLayers想要保存更改时,它会看到该功能的状态,并且您必须将添加的功能状态设置为“插入”(区分大小写) .

相关问题