0

GoogleFusionTablesを使用して地図を作成しています。チェックされているチェックボックスに応じて表示または非表示になるいくつかのレイヤーがあります。

各レイヤー(layer10)が現在表示されているかどうかを追跡するために、変数(layer10on)を使用して、レイヤーのオン/オフを切り替えるコードを作成しました。

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 に答える