0

WFS レイヤーの編集に問題があります。オブジェクトを編集した後、オブジェクトを保存しましたが、問題が発生しました。保存後、オブジェクトのジオメトリが破損します。GEoservers レイヤーのプレビューでレイヤーを監視しようとすると、編集されたオブジェクトが見つかりません。

私のコードがあります。

if(counter==0){
                    if(ppp==null){
                                if (edit==null){
                                    edit = new OpenLayers.Control.ModifyFeature(myVecLayer);
                                    map.addControl(edit);
                                    ppp=map.getControlsByClass("OpenLayers.Control.ModifyFeature");
                                }
                            }

                                map.addLayers([myVecLayer]);
                                Ffilter = new OpenLayers.Filter.Comparison({
                                        type: OpenLayers.Filter.Comparison.EQUAL_TO,
                                        property: 'id',
                                        value: '170',
                                    })
                                myVecLayer.filter=Ffilter;
                                myVecLayer.refresh({force: true});
                            for(var i=0;i<ppp.length;i++){
                                ppp[i].activate();
                            }
                            counter=1;

                }
                else {
                    //FS.deactivate();
                    SS.save();
                    //myVecLayer.destroyFeatures(); 
                    map.removeLayer(myVecLayer); 
                    for(var i=0;i<ppp.length;i++){
                                ppp[i].deactivate();
                            }
                    //ppp.deactivate();
                    counter=0;
                }

そしてWFS

SS=new OpenLayers.Strategy.Save();
osm = new OpenLayers.Layer.OSM( "OpenStreet Maps");
//WFS
                            var myStyle = OpenLayers.Util.extend({},
                                OpenLayers.Feature.Vector.style['default']);
                            myStyle.strokeWidth = 1.5;
                            myStyle.strokeColor = "#ff0000";
                            myStyle.fillOpacity = 0.1;
                            OpenLayers.ProxyHost = "proxy.cgi?url=";
                            var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
                            renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;           
                            myVecLayer = new OpenLayers.Layer.Vector("Редактируемый участок", {
                                strategies: [new OpenLayers.Strategy.BBOX(), SS],
                                style: myStyle,
                                protocol: new OpenLayers.Protocol.WFS({
                                    version: "1.0.0",
                                    srsName:"EPSG:900913",
                                    url: "http://localhost:8080/geoserver/wfs",
                                    featureType: "filedata",
                                    featureNS: "http://www.opengeospatial.net/cite",
                                    defaultFilter : filter
                                }),
                                renderers: renderer
                            })  
4

1 に答える 1

0

これは、ジオサーバーのレイヤーオプションの問題でした。すべての作業を正常に行うには、「ネイティブSRSを保持する」を使用する必要があります。

于 2012-07-24T04:07:52.147 に答える