无法在 openlayers 中将图层名称作为变量传递

Not able to pass layer name as variable in openlayers

我正在尝试从 Openlayers2.12 中的地理服务器加载图层,如下所示:

var layerName = 'something';
wms_layer_larisa2 =  new OpenLayers.Layer.WMS( layerName,"http://localhost:8080/geoserver/gwc/service/wms",  //http://192.168.2.6:8080/geoserver/wms
            {
                layers: "'es:"+layerName+"'",
                format:  "image/png",
                transparent: true,
                "version": "1.1.1",
                tiled: true

            },
            {
                format: "image/png",
                //STYLES: "pointOikismoi",
                //visibility: true, 
                //tileOptions: {maxGetUrlLength: 2048},
                displayOutsideMaxExtent: false,
                projection: new OpenLayers.Projection("EPSG:900913"),
            }
        );

        map.addLayer(wms_layer_larisa2);    

如您所见,我没有直接定义层的名称(通常),但我想将其作为变量传递。这会导致无法成功创建图层。虽然它添加在图层切换器中是不可见的(一切都变成粉红色,所以我猜它找不到它)。 你能告诉我如何解决吗?下面的部分应该是怎样的:

layers: "'esoteriko:"+layerName+"'",

它不起作用,因为 'esoteriko' 是一个字符串。你可以 eval(),但我不推荐。这是错误的用法。检查例如http://24ways.org/2005/dont-be-eval/ 寻求解决方案,或者你用

做点什么
switch(string) {
  case 'esoteriko': 
  map.addLayer(esoterikolayer);
break;
... other cases
}