Javascript 如何在google maps api places中的第二次单击中从侧栏关闭信息窗口

Javascript 如何在google maps api places中的第二次单击中从侧栏关闭信息窗口,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我正在使用以下代码: 我想在侧边栏的第二次点击时关闭infowindow(var iw) 尝试将内容设置为“”(关闭信息窗口的标准方式) 像这样: tr.onclick=function(){ google.maps.event.trigger(markers[i],'click'); console.log('markers[i]: '+i); if (isInfoWindowOpen(iw)){ // do something if

我正在使用以下代码:

我想在侧边栏的第二次点击时关闭infowindow(var iw)


尝试将内容设置为“”(关闭信息窗口的标准方式) 像这样:

tr.onclick=function(){
        google.maps.event.trigger(markers[i],'click');
        console.log('markers[i]: '+i);

    if (isInfoWindowOpen(iw)){
        // do something if IW is open
        iw.close(map,markers[i]);
        // Set the content to ''
        iw.setContent('');
    }
}

在中更改showInfoWindow函数,以检查infowindow是否已打开且是否为同一infowindow,然后只需将其关闭,否则请执行所需的处理以获取内容。需要将属性添加到标记,以便可以判断它是否相同

  function showInfoWindow(i) {
    return function(place, status) {
      if (!!iw && iw._iwId == i) {
        iw.close();
        iw = null;
      } else {
        if (iw) {
          iw.close();
          iw = null;
        }
        if (status == google.maps.places.PlacesServiceStatus.OK) {
          iw = new google.maps.InfoWindow({
            content: getIWContent(place),
            _iwId:i
          });
          iw.open(map, markers[i]);        
        }
      }
    }
  }

谢谢,戈兰,但它不起作用。我用调用的函数更新了代码,以检查iw是否打开。以防万一;o) 奇怪的是,我最近实现了类似的东西。。您可以在这里查看关闭悬停事件信息框的示例:嗨,Goran,我查看了您的示例,但我不太理解它,我认为这与我试图做的有点不同。问题是,如果您将鼠标悬停在某个标记上,它将关闭以前打开的信息框并打开一个新的信息框。我想你遇到的根本问题与关闭信息框有关。嗨,戈兰,你确定你给我发送了正确的示例吗?我只看到一个标记。onHover打开iw。但这就是我所能做的;O)
  function showInfoWindow(i) {
    return function(place, status) {
      if (!!iw && iw._iwId == i) {
        iw.close();
        iw = null;
      } else {
        if (iw) {
          iw.close();
          iw = null;
        }
        if (status == google.maps.places.PlacesServiceStatus.OK) {
          iw = new google.maps.InfoWindow({
            content: getIWContent(place),
            _iwId:i
          });
          iw.open(map, markers[i]);        
        }
      }
    }
  }