Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 如何使用复选框打开和关闭谷歌地图图层?_Google Maps_Google Maps Api 3_Checkbox - Fatal编程技术网

Google maps 如何使用复选框打开和关闭谷歌地图图层?

Google maps 如何使用复选框打开和关闭谷歌地图图层?,google-maps,google-maps-api-3,checkbox,Google Maps,Google Maps Api 3,Checkbox,我正在尝试使用复选框将可切换的流量、云和天气层添加到谷歌地图中。然而,当我尝试这样做时,所有的层都消失了,无论框是否被选中。我从未在Javascript中做过类似的事情,而且我对Javascript非常陌生,所以我不知道自己做错了什么。这是我的代码,任何帮助都会很好 Javascript: function check() { var weatherLayer = new google.maps.weather.WeatherLayer({

我正在尝试使用复选框将可切换的流量、云和天气层添加到谷歌地图中。然而,当我尝试这样做时,所有的层都消失了,无论框是否被选中。我从未在Javascript中做过类似的事情,而且我对Javascript非常陌生,所以我不知道自己做错了什么。这是我的代码,任何帮助都会很好

Javascript:

        function check() 
    {
        var weatherLayer = new google.maps.weather.WeatherLayer({
        temperatureUnits: google.maps.weather.TemperatureUnit.FAHRENHEIT
        });
        var trafficLayer = new google.maps.TrafficLayer();
        var cloudLayer = new google.maps.weather.CloudLayer();

        if(document.getElementById('weather').checked)

        {weatherLayer.setMap(map);}

        else if(!document.getElementById('weather').checked)

        {weatherLayer.setMap(map);}

        cloudLayer.setMap(map);

        trafficLayer.setMap(map);
    }
Html

天气
云
交通
  • 要使用天气层,您需要包括
  • 要启用和禁用全局范围(HTML click listeners在其中运行)中的层,您的映射需要是全局的(在任何函数之外定义它,但在onload事件中初始化它)
  • 您还需要在全局范围内定义图层
  • 要显示图层,请使用setMap(map),要隐藏图层,请使用setMap(null)
  • 修改的“检查”功能:

        function check() 
    {
    
        if(document.getElementById('weather').checked)
    
          {weatherLayer.setMap(map);}
    
        else 
    
          {weatherLayer.setMap(null);}
    
        if(document.getElementById('clouds').checked)
    
          {cloudLayer.setMap(map);}
    
        else 
    
          {cloudLayer.setMap(null);}
    
        if(document.getElementById('traffic').checked)
    
           {trafficLayer.setMap(map);}
    
        else
    
           {trafficLayer.setMap(null);}
    }
    

    你的else if应该读作weatherLayer.setMap(null)哦,是的,我更改了,但仍然不起作用谢谢!不过我对地图还是有一些问题。如果我在代码中将复选框设置为选中或未选中,它将正常运行,但当我在浏览器中点击复选框时,没有任何更改。你知道为什么会这样吗?谢谢看看我的,这是可行的(至少在Chrome中是这样)。这里有一个关于检查复选框变化的问题,我想我还记得看到云覆盖在某个缩放级别下不会显示吗?
        function check() 
    {
    
        if(document.getElementById('weather').checked)
    
          {weatherLayer.setMap(map);}
    
        else 
    
          {weatherLayer.setMap(null);}
    
        if(document.getElementById('clouds').checked)
    
          {cloudLayer.setMap(map);}
    
        else 
    
          {cloudLayer.setMap(null);}
    
        if(document.getElementById('traffic').checked)
    
           {trafficLayer.setMap(map);}
    
        else
    
           {trafficLayer.setMap(null);}
    }