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

希望这两种方法中的一种有效!

于 2013-03-05T07:57:42.400 回答