マップ上の機能を表示/非表示にするカスタムスタイルがありますが、適用すると、機能の更新によってマップが更新されるまでアクティブになりませんが、すぐにトリガーする必要があります。
Map.renderとrenderSync()を試しましたが、何もしませんでした。 mapResize()も何もしないように見えますが、機能が更新されるのを待つか、マップを移動すると、機能します。
何か案は?機能の更新に関係なく、オンデマンドでマップを強制的に再描画するにはどうすればよいですか?
レイヤーのソースを強制的に更新する必要があると思います。更新するには、レイヤーでchanged
関数を呼び出します。
yourLayer.getSource().changed();
参照: http://openlayers.org/en/v3.6.0/apidoc/ol.source.Source.html
私はついにopenlayers3のレイヤーを更新する解決策を見つけました。
次のように、レイヤーソースのパラメーターを更新する必要があります。
var source = yourLayer.getSource();
var params = source.getParams();
params.t = new Date().getMilliseconds();
source.updateParams(params);
Sarumanateeがうまくいかない場合は、次の方法を試すことができます。
map.render();
私はol3を使用しています。
1つの方法は、目的に基づいて機能をグループ化し、各グループを異なるレイヤーに配置することです。そうすれば、非表示または表示したい機能を持つ指定されたレイヤーを簡単に表示または非表示にできます。
問題を解決するには、
this.map.updateSize();
yourlayer.source()。updateParams({CQL_FILTER: "1 = 1"});を使用します
それは間違いなく動作します。