将加载层的可见性设置为false,除了Openlayers 2.x中选中的那个
Set Visibility of loaded layers to false except the checked one in Openlayers 2.x
所有层均为来自GeoServer服务的WMS。我想设置图层的可见性,只有当它被选中时,它也在被选中时加载。
这是我的HTML标记:...
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="2year" value="2year" onclick="toggleStatic(this);">2-Year Rainfall
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="5year" value="5year" onclick="toggleStatic(this);">5-Year Rainfall
</label>
</div>
...
我已经创建了一个函数,但是它不是很好,不能识别当前加载的层。
样品加载图:
$("#5year").one("click", function() {
$(this).is(":checked");
fiveCBR = new OpenLayers.Layer.WMS(
"5-Year Flood Hazard Map CBR", "http://10.0.0.23:8080/geoserver/gwc/service/wms",
{
srs: 'EPSG:32651',
layers: 'cite:evidensapp_cbrfiveyear',
format:'image/png8',
//gridSet: 'EPSG:4326',
transparent: true
},
//{'displayInLayerSwitcher':false},
{
singleTile: false,
isBaseLayer: false,
ratio: 1
}
);
map.addLayer(fiveCBR);
});
下面是设置图层可见性的函数:
function toggleStatic(e){
if(e.value == '5year'){
floodMapCBR.setVisibility(false);
seniang2014.setVisibility(false);
twoCBR.setVisibility(false);
fiveCBR.setVisibility(e.checked);
tenCBR.setVisibility(false);
twentyfiveCBR.setVisibility(false);
fiftyCBR.setVisibility(false);
hundredCBR.setVisibility(false);
}
...
问题是我无法识别哪些层已经加载,所以它返回一个错误:
无法读取未定义的属性'setVisibility'
总而言之,我想把所有加载的图层的可见性设置为false,除了选中的那个
设法弄清楚这一点,使用相同的HTML标记使用这些函数:
function toggleStatic(e) {
var layers = map.getLayersByName(e.value);
var mLayers = map.layers;
for (var a = 0; a < mLayers.length; a++) {
if(mLayers[a].CLASS_NAME == "OpenLayers.Layer.WMS"){
var str = mLayers[a].name;
if(str == e.value){
if(layers.length === 1) {
layers[0].setVisibility(true);
}
}
else{
hideLayer(str);
}
}
}
}
function hideLayer(layerName) {
var layers = map.getLayersByName(layerName);
if(layers.length === 1) {
layers[0].setVisibility(false);
}
else {
console.log('Error');
}
}
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 使用不带文本文件的OpenLayers显示POI
- OpenLayers在悬停时高亮显示功能,并在单击时选择
- 注册OpenLayers事件时,即使使用匿名函数或绑定,JavaScript关闭也会触发循环内的所有内容
- 如何在OpenLayers中获取动态绘制的多边形的坐标
- OpenLayers LonLat transform
- 如何限制OpenLayers地图中的区域
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 如何创建一个随机的计算机选项,除了你已经选择的选项
- 如何在Meteor中使用Famo.us创建Openlayers地图
- Openlayers 3为了可见性而绑定到Vector层的复选框没有任何作用
- 在OpenLayers中同时从多个层获取FeatureFromEvent
- Javascript获取元素背景图像,但消除了“;url()”;
- 两个层次的手风琴除了第一次不起作用
- OpenLayers-自定义图像在一层上的马赛克
- OpenLayers.Layer.Text在0,0处显示图标
- Openlayers顶部的动力学层
- 除了用于跟踪的IP地址之外,是否有任何计算机特定信息
- 在 OpenLayers 中捕获鼠标滚轮缩放
- 将加载层的可见性设置为false,除了Openlayers 2.x中选中的那个