【问题标题】:Javascript for Google Fusion Table layers working but trying to tidy code用于 Google Fusion Table 图层的 Javascript 工作但试图整理代码
【发布时间】:2012-06-21 21:31:40
【问题描述】:

我正在使用 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);" />

我已经有好几年没有做任何编码了,所以如果能帮助我知道哪里出错了,我将不胜感激。

谢谢,

尼古拉

【问题讨论】:

    标签: javascript google-maps checkbox google-fusion-tables


    【解决方案1】:

    我在this answer 中展示了一个示例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);" />
    

    【讨论】:

    • 谢谢,这样干净多了!非常感谢。
    猜你喜欢
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    相关资源
    最近更新 更多