当显示多个标记时,如何在单击另一个标记时关闭InfoWindow。

8 浏览
0 Comments

当显示多个标记时,如何在单击另一个标记时关闭InfoWindow。

点击任何下一个标记时,我想要关闭当前的信息窗口,目前点击后会显示所有的信息窗口。

我的JavaScript代码:

var marker = new MarkerWithLabel({
    position: latlng,
    draggable: false,
    raiseOnDrag: true,
    map: map,
    icon: 'a.png',
    labelContent: '',
    labelAnchor: new google.maps.Point(22, 0),
    labelClass: "labels"
});
marker['infowindow'] = new google.maps.InfoWindow({
    content: ''
});
google.maps.event.addListener(marker, 'click', function() {
    this['infowindow'].open(map, this);
});

0
0 Comments

当多个标记显示时,点击其他标记时如何关闭InfoWindow。

出现的原因:

当点击一个标记时,InfoWindow会打开,但当点击其他标记时,之前打开的窗口仍然保持打开状态,没有关闭。这可能会导致混乱和不必要的信息窗口重叠。

解决方法:

为了解决这个问题,我们可以保存之前打开的InfoWindow,并在新窗口打开时关闭它。

var currWindow = false; 
base.attachInfo = function(marker, i){
    var infowindow = new google.maps.InfoWindow({
        content: "Content"
    });
    google.maps.event.addListener(marker, 'click', function(){
        if( currWindow ) {
           currWindow.close();
        }
        currWindow = infowindow;
        infowindow.open(base.map, marker);
    });
}

上述代码中,我们定义了一个变量`currWindow`来保存当前打开的InfoWindow。当点击一个标记时,我们首先检查`currWindow`是否存在,如果存在则关闭它。然后将当前的InfoWindow赋值给`currWindow`变量,并打开它。

这样,当点击其他标记时,之前打开的InfoWindow会自动关闭,只显示当前点击的标记的InfoWindow。这样可以确保每次只有一个InfoWindow处于打开状态,避免了重复和混乱。

这个解决方法是简单而有效的,可以很好地解决多个标记显示时关闭InfoWindow的问题。

0