动态创建图层名称,eval()出现问题

时间:2015-02-15 14:10:44

标签: eval layer openlayers-3

我想创建一些名称取自数据库的图层。数据库中的“树”成为“Layer_Trees”openlayers层。 我用 eval 函数尝试了很多东西,但没有成功。似乎完全无法定义新变量。

function addLayer_ImageWMS(SourceName,SourceLayerName) {

    LayerName="Layer_" + SourceLayerName;

    eval(LayerName) = new ol.layer.Image({
        title: LayerName,                
        source: new ol.source.ImageWMS({
            url: SourceName,
            params: {
            'LAYERS': SourceLayerName, 
            'TRANSPARENT': 'true'
            }
        })
    })  
    LayersArray.push(LayerName);

}

如果删除“eval()”,一切正常,但外层无法访问图层。 Openlayers 3.我必须在此功能之外添加这些图层,因为它们是通过菜单打开和关闭的。 有没有简单的方法呢?

我打算用这样的代码打开和关闭它们:

SourceName = "Layer_" + $(layer).children("#SourceName").val();
IsChecked = $(layer).children(".Style_LayerList_Radiobutton").prop("checked");
eval(SourceName).setVisible(IsChecked);

1 个答案:

答案 0 :(得分:1)

您不需要eval。只需使用这样的对象:

var layers = {};
layers['Layer_' + SourceLayerName] = new ...;

稍后您可以使用以下方式访问图层:

layers['Layer_Trees'].setVisible(true);