1

ベクターに新しいラベルを設定したら、マップを再描画しようとするためだけに、しばらくの間グーグルで検索しました。ズームインおよびズームアウトすると、ラベルは正しく機能しますが、クリック機能で更新したいと思います。

               $(".openlayerLabel").change(function(){
                    var theValue = $(this).val();
                    if($(this).is(':checked')) {
                        console.log('Checkbox checked');
                        plugins.search.setStyles(true);
                        plugins.search.selectLayer.refresh({force:true});
                    }
                    else {
                        console.log('Checkbox unchecked');
                    }
                });

機能しないのは.refreshです(残りは問題なく機能しています)。force:true を使用する必要があると誰かが書いているのを見たので、これを試してみましたが、実際には何も起こりませんでした。私も .redraw を試しましたが、これは同様の結果をもたらします。

ヘッドアップはありますか?

4

1 に答える 1

2

私は少し前に OpenLayers プロジェクトに取り組んでいたので、少しさびていますが、私の記憶が正しければ、レイヤー内のすべての機能をループして、それらすべてを明示的に呼び出す必要があるかもしれませんlayer.drawFeature(feature)。このようなもの:

var features = plugins.search.selectLayer.features;
for(var i = 0; i < features.length; i++) {
  plugins.search.selectLayer.drawFeature(features[i]);
}

ドキュメントはこちら: http://dev.openlayers.org/apidocs/files/OpenLayers/Layer/Vector-js.html#OpenLayers.Layer.Vector.drawFeature

ベースレイヤークラスには「再描画」メソッドもあるので、試すことができます:

plugins.search.selectLayer.redraw();

ドキュメントはこちら: http://dev.openlayers.org/apidocs/files/OpenLayers/Layer-js.html#OpenLayers.Layer.redraw

うまくいけば、これら 2 つの方法のいずれかが機能します。

于 2013-03-05T07:57:42.400 に答える