Openlayers:缩放WFS有时会返回到第一个缩放级别

Openlayers:缩放WFS有时会返回到第一个缩放级别,openlayers,zooming,Openlayers,Zooming,我有一个使用GeoWebCache提供图层的GeoServer服务器。 这个很好用。 我还有一个WFS层,它使用过滤器(地址ID)填充。 大多数情况下,此WFS层的功能少于5个,但在某些情况下,它的功能大约为20-30个,但始终少于100个。 我使用OpenLayers来显示层,并且我有一个自定义的搜索框供用户搜索地址。 如前所述,这一切都很好 但是,当我有一个WFS层,其功能大约超过10-15个,并且我(或用户)在单击一些(可能太快)后单击默认PanZoomBar上的缩小按钮时,zoomlev

我有一个使用GeoWebCache提供图层的GeoServer服务器。 这个很好用。 我还有一个WFS层,它使用过滤器(地址ID)填充。 大多数情况下,此WFS层的功能少于5个,但在某些情况下,它的功能大约为20-30个,但始终少于100个。 我使用OpenLayers来显示层,并且我有一个自定义的搜索框供用户搜索地址。 如前所述,这一切都很好

但是,当我有一个WFS层,其功能大约超过10-15个,并且我(或用户)在单击一些(可能太快)后单击默认PanZoomBar上的缩小按钮时,zoomlevel将重置为WFS层的原始zoomlevel(缩放以适应)。 如果功能少于10个,则不会发生这种情况

我没有任何花哨的代码,可能会导致这种行为,它正在FireFox、IE和Chrome中发生

这是我创建WFS层的代码:

var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
wfsLayer = new OpenLayers.Layer.Vector("Dakvlakken", { 
  renderers: renderer,
  displayInLayerSwitcher: true,
  strategies: [new OpenLayers.Strategy.BBOX()],
  filter: new OpenLayers.Filter.Comparison({ 
          type: OpenLayers.Filter.Comparison.EQUAL_TO,
          property: "adres_id",
          value: startAdresID}),
  protocol: new OpenLayers.Protocol.WFS({ 
    url: "http://MyIP/geoserver/wfs",
    featureType: "full",
    srsName: "EPSG:28992",
    geometryName: "geom_rd"
  })
});
这就是在用户选择不同地址后我如何更改筛选器:

function changeFilter(newValue, x, y, adres)
{ 
    wfsLayer.destroyFeatures();
    filter = new OpenLayers.Filter.Logical(
    { 
      type: OpenLayers.Filter.Logical.AND, 
      filters: [ 
        new OpenLayers.Filter.Comparison(
        { 
            type: OpenLayers.Filter.Comparison.EQUAL_TO, 
            property: "adres_id", 
            value: newValue 
        }), 
        new OpenLayers.Filter.Spatial(
        { 
            type: OpenLayers.Filter.Spatial.BBOX, 
            value: new OpenLayers.Bounds(x-50, y-50, x+50, y+50), 
            projection: "EPSG:28992" 
        }) 
      ]  
    });

    wfsLayer.filter = filter;
    wfsLayer.refresh({force: true});
  }
}
我已经调试了好几天了,但我不知道如何解决这个问题。 任何帮助都将不胜感激。

我发现了问题所在。 我检查了zoomlevel是否太高,如果是,我将其更改为预定义的级别。 此检查是在一个方法中进行的,该方法只应调用一次,以便用WFS层的属性填充表。 每次缩放后都会调用此方法。这是不正确的,我也会尝试解决这个问题。 所以我最初的问题解决了,但作为回报,我得到了一个新问题;)

如果我再次陷入困境,我会发布一个新问题

谢谢

保罗