This question already has an answer here:
How to keep single Info window open at the same time in Google map V3?
                            
                                (1个答案)
                            
                    
                2年前关闭。
        

    

当我单击地图上的其他位置或其他标记时,我希望该信息窗口关闭。即,只有一个信息窗口在同一时间打开,而所有其他信息窗口都关闭。
但是我该怎么做呢?

感谢您的回答!

我的代码:

var map = new google.maps.Map(document.getElementById('map'), options);

addMarker({
  coords: { lat: 62.791711, lng: 22.808479 },
  content: 'test 1'
});
addMarker({
  coords: { lat: 65.799962, lng: 24.497773 },
  content: 'test 2'
});
addMarker({
  coords: { lat: 62.331629, lng: 22.890667 },
  content: 'test 3'
});

function addMarker(props) {
  var marker = new google.maps.Marker({
    position: props.coords,
    map: map
  });

  if (props.content) {
    var infoWindow = new google.maps.InfoWindow({
      content: props.content
    });

    marker.addListener('click', function() {
      infoWindow.open(map, marker);
    });
  }
}

最佳答案

要一次仅打开一个信息窗口,请创建一个将包含一个InfoWindow实例的全局变量。

var infoWindow;


然后,在初始化函数(initMap)中,实例化信息窗口:

infoWindow = new google.maps.InfoWindow();


将您的addMarker函数更改为以下内容:

function addMarker(props) {
  var marker = new google.maps.Marker({
    position: props.coords,
    map: map
  });

  if (props.content) {
    marker.addListener('click', function() {
      infoWindow.setContent(props.content);
      infoWindow.open(map, marker);
    });
  }
}


而且,如果您想在用户单击地图时关闭信息窗口,则可以将此事件侦听器添加到地图中:

map.addListener('click', function() {
    if (infoWindow) infoWindow.close();
});


这是a JSBin的工作示例。

关于javascript - 单击其他标记时如何Google Maps API关闭信息窗口? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49613610/

10-11 05:10