动态创建的图层名称,eval() 的问题
Dynamically created layer names, problems with eval()
我想使用从数据库中获取的名称创建一些图层。 "Trees" 在数据库中成为 "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);
您不需要 eval
。只需使用这样的对象:
var layers = {};
layers['Layer_' + SourceLayerName] = new ...;
稍后您可以通过以下方式访问图层:
layers['Layer_Trees'].setVisible(true);
我想使用从数据库中获取的名称创建一些图层。 "Trees" 在数据库中成为 "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);
您不需要 eval
。只需使用这样的对象:
var layers = {};
layers['Layer_' + SourceLayerName] = new ...;
稍后您可以通过以下方式访问图层:
layers['Layer_Trees'].setVisible(true);