web-dev-qa-db-ja.com

Openlayers-3マップを強制的に更新します

マップ上の機能を表示/非表示にするカスタムスタイルがありますが、適用すると、機能の更新によってマップが更新されるまでアクティブになりませんが、すぐにトリガーする必要があります。

Map.renderとrenderSync()を試しましたが、何もしませんでした。 mapResize()も何もしないように見えますが、機能が更新されるのを待つか、マップを移動すると、機能します。

何か案は?機能の更新に関係なく、オンデマンドでマップを強制的に再描画するにはどうすればよいですか?

8
user4773894

レイヤーのソースを強制的に更新する必要があると思います。更新するには、レイヤーでchanged関数を呼び出します。

yourLayer.getSource().changed();

参照: http://openlayers.org/en/v3.6.0/apidoc/ol.source.Source.html

7
Sarumanatee

私はついにopenlayers3のレイヤーを更新する解決策を見つけました。

次のように、レイヤーソースのパラメーターを更新する必要があります。

var source = yourLayer.getSource();
var params = source.getParams();
params.t = new Date().getMilliseconds();
source.updateParams(params);
6
VincentDEJ

Sarumanateeがうまくいかない場合は、次の方法を試すことができます。

map.render();

私はol3を使用しています。

1
bartosz.baczek

1つの方法は、目的に基づいて機能をグループ化し、各グループを異なるレイヤーに配置することです。そうすれば、非表示または表示したい機能を持つ指定されたレイヤーを簡単に表示または非表示にできます。

問題を解決するには、

this.map.updateSize();
0
khem raj regmi

yourlayer.source()。updateParams({CQL_FILTER: "1 = 1"});を使用します

それは間違いなく動作します。

0
Pankaj Kumar