4

このコード(http://stackoverflow.com/questions/10318316/how-to-hide-or-display-a-google-maps-layer/)を自分のページに実装して、天気/雲をオンにしようとしました/私の地図から外れていますが、どういうわけかそれは私の現在のコードに干渉します。上記のリンクに表示されている2つのオプションをすでに試しましたが、何か間違ったことをしたか、マップに既にあるFusion Tablesの選択に干渉しますか?

誰かが正しいコードスニペットを手伝ってくれませんか?私のページはここhttp://www.strahlen.org/map/mapplusweather.htmです。(選択解除)ボタンはすでに右下隅にあります。

よろしくお願いします、フランク

ps:管理者があなたの投稿を削除しましたが、以前の助けをくれたAlexander Farberに感謝します!

ps 2:もちろん、天気レイヤーは機能しています。http://www.strahlen.org/map/mapweather.htmを参照してください。ただし、オン/オフを切り替えることはできません。

*最終編集* リンク切れを防ぐために:ここで「本番バージョン」のコードを使用しました-> http://www.strahlen.org/map/

4

2 に答える 2

5

私はあなたのサイトを調べましたが、既存のコードにいくつかの基本的な変更を加えるだけでよいと思います。initialize()まず、関数内に2つの新しい変数を追加します。

function initialize() {
    var tableId = 3167783;
    var cloudDisplayIsOn = false;
    var weatherDisplayIsOn = false;

次に、既存のクラウド clickリスナーコードで、次の変更を行います。

google.maps.event.addDomListener(document.getElementById('cloud'),
    'click', function() {
        if ( cloudDisplayIsOn ) {
            cloudLayer.setMap( null );
            cloudDisplayIsOn = false;
        }
        else {              
            cloudLayer.setMap( map );
            cloudDisplayIsOn = true;
        }
    });

そして最後に、既存の天気 clickリスナーコードで、非常によく似た変更を加えます。

google.maps.event.addDomListener(document.getElementById('weather'),
    'click', function() {
        if ( weatherDisplayIsOn ) {
            weatherLayer.setMap( null );
            weatherDisplayIsOn = false;
        }
        else {
            weatherLayer.setMap( map );
            weatherDisplayIsOn = true;
        }
    });

ここで、少しマイナーなデバッグを行う必要があるかもしれませんが、これにより、必要なとの表示オン/オフコードが追加されるcloudLayerweatherLayer思います。

于 2012-05-01T19:12:30.703 に答える
0

私は同様の機能を実行しようとしていますが、傾斜が異なります。次のコードは、マップサーバーページが参照するfusion_maps_v3.jsファイルから現在使用されているgeeToggleLayer関数です。レイヤーラベルをクリックするだけで表示を切り替えることができるように、チェックボックスの切り替えを削除しようとしています。

    function geeToggleLayer(e, checkBoxId, channel, glmId, layerName) {
      try {
        var cb = document.getElementById(checkBoxId);
        var id = glmId + '-' + channel;

        // toggle layer visibility via clicking checkbox
        try {
          if (cb.checked) {
            geeMap.showFusionLayer(id);
          } else {
            geeMap.hideFusionLayer(id);
          }
        } catch (err2) {
          alert('Failed attempt to enable/disable layer: ' +
                layerName + '\n' + id + '\n' + err2);
        }
      } catch (err) {
        alert('Failed attempt to get checkbox for layer: ' +
              layerName + '\n' + err);
      }
      cancelEvent(e);
    }
于 2014-08-28T19:17:01.667 に答える