我在openlayers中有两层和切换器。立即初始化后,我想将第二层设置为可见,但仍显示第一层。
我尝试过:setVisibility,setBaseLayer,但是没有成功。
这是代码的一部分:

var gmapLayer = new OpenLayers.Layer.Google("Google sattelite", { type: google.maps.MapTypeId.SATELLITE, visibility: false });
var gmapStreetLayer = new OpenLayers.Layer.Google("Google streets", { visibility: false });
map.addLayer(gmapLayer);
map.addLayer(gmapStreetLayer);


map.addControl(new OpenLayers.Control.LayerSwitcher());

初始化后,我尝试了:

map.setBaseLayer(selLayer);
//or
selLayer.setVisibility(true);

最佳答案

好的,我发现了问题。我使用setBaseLayer错误,因为调用了数组请参见:

var selLayer = map.getLayersByName(selectedLayer);
if (selLayer !== null) {
    map.setBaseLayer(selLayer);        //<---Wrong
}


正确的解决方案是:

var selLayer = map.getLayersByName(selectedLayer);
if (selLayer !== null) {
    map.setBaseLayer(selLayer[0]);        //<--Good
}

08-17 13:30