OpenLayers:如何在更改矢量图层后刷新地图

Mat*_*rts 5 openlayers

在OpenLayers中,我有一个集群策略来限制用户在地图上看到的功能/点数.但是,当用户完全放大时,我想关闭群集策略,以便显示所有功能.为此,我正在捕捉这样的缩放事件:

map.events.register("zoomend", this, function (e) {
    if (map.getZoom() === this.mapMaxZoom) {
        // Don't cluster at this level. No matter what.
        this.vector.strategies[0].threshold = 1000;
        console.log("setting the clustering strategy to 1000");
    }
});
Run Code Online (Sandbox Code Playgroud)

这种方法有效,但我没有看到应用新的聚类 - 我必须再次缩小以查看聚类更改为阈值1000(从而显示所有功能).我需要一些方法来强制openlayers刷新.我试过调用map.redraw()但这没有帮助.有任何想法吗?

Kli*_*Max 11

vectorlayer.refresh({force:true}); 试试这个.

  • 我发现在openlayers 3中,您需要在源对象(而不是层)上调用refresh。 (3认同)

igo*_*rti 5

你应该redraw()在图层上调用方法而不是地图 -this.vector.redraw()


Arg*_*ros 5

对于 openlayers > 3

vectorlayer.getSource().refresh()
Run Code Online (Sandbox Code Playgroud)


Mat*_*rts 3

我在这篇文章中找到了答案。OpenLayers 集群重新计算

基本上,我需要设置集群策略,然后“重新集群”。工作是一种享受。