我想创建一些名称取自数据库的图层。数据库中的“树”成为“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);
答案 0 :(得分:1)
您不需要eval
。只需使用这样的对象:
var layers = {};
layers['Layer_' + SourceLayerName] = new ...;
稍后您可以使用以下方式访问图层:
layers['Layer_Trees'].setVisible(true);