Openlayers 2.x:添加另一个矢量图层后不刷新WFS矢量图层

时间:2015-11-11 07:47:22

标签: vector openlayers geoserver

这只是我的代码片段:

function removeFilter(a){
    if (a === "100-Year Rainfall"){
        bldg100yearCBR.filter = null;
        bldg100yearCBR.refresh({
            force: true
        });     
    }
...

以上是我删除WFS矢量图层过滤器的功能。如果我不想添加另一个图层,它就有效。我想知道为什么?这是我添加图层的方式:

 bldg100yearCBR = new OpenLayers.Layer.Vector("100-Year Rainfall Affected Buildings", {
            strategies: [new OpenLayers.Strategy.Fixed()],
            eventListeners: {           
                'loadend': function (evt) {
                    map.zoomToExtent(bldg100yearCBR.getDataExtent());
                    //map.getExtent().containsBounds(bldg100yearCBR, true);
                    $("#load_table").removeAttr("disabled", "disabled");
                    $("#load_table").val("Go"); 
                    $("#locateMe").hide();  
                    },
                'loadstart': function (evt) {               
                    $("#load_table").attr("disabled", "disabled");
                    $("#load_table").val("Loading...");
                    $("#locateMe").show();                      
                    }
            },
            projection: new OpenLayers.Projection("EPSG:4326"),
            protocol: new OpenLayers.Protocol.WFS({
                version: "1.1.0",
                url: a,
                featureType: "bldg_100yr",
                featureNS: b,
                geometryName: "geom"
            }),
            renderers: renderer,
            styleMap: new OpenLayers.StyleMap(style),
            displayInLayerSwitcher: !0      
        });
        var selFloodEvent = $('#affectedLayer').val(); 
        var layerName  = map.getLayersByName(selFloodEvent);
        var len =  layerName.length;
        if (len < 1){
            map.addLayer(bldg100yearCBR);
            activateControls(c);
        }else{
        removeFilter("100-Year Rainfall");
        layerName[0].setVisibility(true);
        console.log("reset me");
        }           
        myflag1 = true;
        toggleStatic1("100-Year Rainfall Affected Buildings");

添加/加载另一个矢量图层后,过滤器无法正常工作。方案是如果图层已经加载,我想显示它而不再添加它,但如果之前已经过滤,我想重置它。这就是问题,removeFilter功能在加载另一个矢量图层后不会起作用。

因此,基本上过滤器仅在我第一次加载图层时起作用。我还注意到在我的浏览器的控制台日志中,它没有像这样查询GeoServer:

XHR finished loading: POST "http://127.0.0.1:8080/geoserver/wfs".

加载另一层后。

0 个答案:

没有答案