OpenLayers重绘不起作用

时间:2013-03-05 07:42:13

标签: javascript jquery openlayers

我已经谷歌搜索了一段时间,只是为了尝试让我的地图重绘一旦我在我的矢量上设置了一个新标签。如果我放大和缩小标签确实可以正常工作,但我希望它能够在点击功能上刷新。

               $(".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,但这会得到类似的结果。

任何抬头?

1 个答案:

答案 0 :(得分: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

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