0

我正在使用 Google Fusion Tables 创建地图。它有几个图层,根据选中的复选框显示或隐藏。

我创建了一些代码来打开/关闭图层,使用变量 (layer10on) 来跟踪每个图层 (layer10) 当前是否可见:

function toggleLayer10() { 
      if(layer10on) { layerl0.setOptions({map: null}); } 
      if(!layer10on) { layerl0.setOptions({map: map}); } 
      layer10on=!layer10on; 
} 

...

<input type="checkbox" checked onchange="toggleLayer10();" />

这可以正常工作,但我不想为每个复选框/图层复制此代码,因此我尝试传递选中哪个复选框以及与之相关的图层的参数,但它不起作用:

function toggleLayer(layerToChange,checkboxID) {
    if(!document.getElementById(checkboxID).checked) {
        layerToChange.setOptions({map: null});
    }
    if(document.getElementById(checkboxID).checked) {
        layerToChange.setOptions({map: map});
    }
}

...

<input value="layer10" id="check10" type="checkbox" checked onchange="toggleLayer(this.value,this.id);" />

自从我进行任何编码以来已经有好几年了,所以任何帮助让我知道我哪里出错了,我们将不胜感激。

谢谢,

尼古拉

4

1 回答 1

1

我在这个答案中展示了一个示例 toggleLayer ,但它不是那么简洁。this_layer 是实际的 FT 层,应该是全局的。这将检查图层是否可见。

function toggleLayer(this_layer)
{
   if( this_layer.getMap() ){
        this_layer.setMap(null);
   }else{
        this_layer.setMap(map);
   }
}

您需要将地图作为全局地图以及图层。我认为,但尚未测试您的复选框应如下所示:

<input value="layer10" id="check10" type="checkbox" checked onchange="toggleLayer(layer10);" />
于 2012-06-19T19:51:36.097 回答