【问题标题】:Turning weather layer on/off combined with other selections结合其他选择打开/关闭天气层
【发布时间】:2012-05-07 06:58:17
【问题描述】:

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

有人可以帮我编写正确的 sn-p 代码吗? 我的页面在这里http://www.strahlen.org/map/mapplusweather.htm。 (取消)选择按钮已经在右下角。

提前致谢, 弗兰克

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

ps 2:我当然可以使用天气图层,请参阅 http://www.strahlen.org/map/mapweather.htm,但我无法打开/关闭它

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

【问题讨论】:

  • 大多数复选框都有 addDOMListener,但我在mapplusweather 中看不到天气复选框的任何点击操作。我错过了他们吗?没有他们什么都不会发生。
  • 到目前为止,我还不是程序员。我只是复制/粘贴其他人使用的代码的 sn-ps,然后学习、学习、学习。所以,感谢您的初步回答。我会尝试学习并在我了解更多信息后尽快回复您。干杯!弗兰克
  • 安德鲁,在你的帮助下,我又迈出了一步。谢谢,我现在明白了一点。我已经更改了代码,以便我可以单击以启动天气和/或云层。见strahlen.org/map/mapplusweather.htm。但是,如何在取消选择时再次关闭图层?干杯!弗兰克

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


【解决方案1】:

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

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

然后,在您现有的 cloud click 侦听器代码中,进行以下更改:

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

最后,在您现有的 weather click 监听器代码中,进行非常相似的更改:

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

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

【讨论】:

  • 亲爱的肖恩,非常感谢您的帮助。请给我几个星期的时间来测试这一点,因为我昨晚成为了父亲;)我一有睡眠/时间/等就会回复你;)干杯!
  • 哇——恭喜!没有汗水,不用着急 - 感谢您的提醒
  • Yessss,在您的帮助下,它可以工作了!我想我们做到了 :) 在换尿布之间 :) 不得不稍微调整一下你的代码。极好的。你能检查一下它是否也适合你吗? -> strahlen.org/map/mapplusweathertest.htm
  • 是的,我刚刚检查过了,你很好。有时您必须缩小一点才能看到云层,但是 WeatherLayer 和 CloudLayer 都可以很好地打开/关闭。并享受新的小家伙!
  • 谢谢 ;) 我们是。这里都超级棒。说:我对 stackoverflow 还不是很熟悉。我需要点击某个地方来奖励您的大力帮助吗?
【解决方案2】:

我正在尝试执行类似的功能,但倾斜度不同。以下代码是我们地图服务器页面引用的 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);
    }

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多