2015-02-15 5 views
0

Я хочу создать несколько слоев с именами, взятыми из базы данных. «Деревья» в базе данных становятся слоем открытых слоев «Layer_Trees». Я пробовал много вещей с eval Функция, но без успеха. Похоже, что он совершенно неспособен определить новые переменные.Динамически созданные имена слоев, проблемы с 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

Вам не нужно eval для этого. Просто использовать объект, как это:

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

Позже вы можете обратиться к слою с:

layers['Layer_Trees'].setVisible(true); 
Смежные вопросы