我想添加一个点,然后使用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();
第二种方法工作第一种方法不起作用。
我需要第一种方法。
我该怎么办?
答案 0 :(得分:1)
当您使用new OpenLayers.Control.DrawFeature(wfs, OpenLayers.Handler.Point)
添加点时,默认情况下功能状态设置为“插入”,但是当您使用vectorLayer.addFeatures()
命令添加点时,功能状态为空。
当OpenLayers想要保存更改时,它会看到该功能的状态,并且您必须将添加的功能状态设置为“插入”(区分大小写)。