【问题标题】:Google maps api close infowindow when clicking somewhere else单击其他地方时Google maps api关闭信息窗口
【发布时间】:2015-05-21 23:16:45
【问题描述】:

我已经尝试谷歌它,但找不到适用于我的代码的那个。每当有人在地图上按下另一个位置或在其他地方打开另一个信息窗口时,我希望我的信息窗口关闭。

有人可以帮忙吗?

var myLatlng = new google.maps.LatLng(val.coords.split(',')[0].trim(),val.coords.split(',')[1].trim());

var infowindow = null;
        var contentString = '<div id="content">'+
  '<div id="siteNotice"> content'+
  '</div>';


        var infowindow1 = new google.maps.InfoWindow({
            content: contentString,
            maxWidth: 250
        });

        var marker1 = new google.maps.Marker({
            position: myLatlng,
            map: map,
            icon: image,
        });

        google.maps.event.addListener(marker1, 'click', function() {
            infowindow1.open(map,marker1);
        });


    });
});

【问题讨论】:

  • 我一直在尝试构建一个 jsfiddle 来测试我的响应,但没有运气。您能否发布足够的代码,以便我可以建立一个测试库(或者更好的是,您建立一个 JSfiddle 来帮助我们所有人理解您的问题,修复它并与世界其他地方分享修复...)
  • 我仍然无法加载这个东西......但我确实看到你的右括号有问题..你有太多不匹配的东西。

标签: api google-maps maps


【解决方案1】:

JS Fiddle查看我添加的代码

google.maps.event.addListener(map, 'click', function(){
            infowindow1.close(map, marker1);
        });

显然,要捕获地图上所有打开的项目,您必须使用一个小循环在该函数中捕获所有项目,但这是我将留给您的事情。我会添加一个变量来跟踪您创建了多少,然后将“infowindow”+var_index 循环到该最大值,将它们全部设置为关闭。我仍在寻找一种更好的方法来获取所有打开的信息窗口,但与此同时,这种技术会起作用。

【讨论】:

  • 这很好,但是如果您有多个标记,您可以单击其中几个而不关闭原始标记。知道如何在侦听器中包含这些其他标记,以便当您打开一个 infoWindow 并单击另一个时,第一个关闭?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
相关资源
最近更新 更多