打开/关闭天气层与其他选择相结合

时间:2012-04-26 14:08:45

标签: google-maps google-maps-api-3 weather-api

我尝试在我的页面上实现此代码(http://stackoverflow.com/questions/10318316/how-to-hide-or-display-a-google-maps-layer/),以显示天气/云打开/关闭我的地图, 但不知何故,它干扰了我当前的代码。我已经尝试了上面链接中提供的两个选项,但也许我做错了,或者它干扰了我的地图中已有的Fusion Tables选项?

有人可以帮我提供正确的代码片段吗? 我的页面在http://www.strahlen.org/map/mapplusweather.htm。 (de)选择按钮已经在右下角。

提前致谢, 弗兰克

ps:虽然管理员删除了你的帖子,感谢Alexander Farber的你以前的帮助!

ps 2:我当然有天气层工作,请参阅http://www.strahlen.org/map/mapweather.htm,但我无法打开/关闭

*最终修改* 防止链接腐烂:我现在在我的“生产版本”中使用了代码 - > http://www.strahlen.org/map/

2 个答案:

答案 0 :(得分:5)

我已经查看了您的网站,我相信您只需对现有代码进行一些基本更改。首先,在initialize()函数中添加两个新变量:

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;
        }
    });

现在您可能需要进行一些小调试,但我相信这会为cloudLayer和您需要的weatherLayer添加显示开/关代码。

答案 1 :(得分: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);
    }