Google maps api 3 用onclick javascript关闭信息窗口谷歌地图

Google maps api 3 用onclick javascript关闭信息窗口谷歌地图,google-maps-api-3,infowindow,Google Maps Api 3,Infowindow,我试图做一些非常简单的事情,但是搜索结果是空的,出于某种原因我无法解决这个问题(我是一个JS初学者)。我正试图关闭一个带有onclick标记的信息窗口。我知道你可以通过点击“x”来关闭它,但其目的是更深层次的 我的代码: function placeMarker(location) { marker = new google.maps.Marker({ position: location, map: map, }); var infowindow = new g

我试图做一些非常简单的事情,但是搜索结果是空的,出于某种原因我无法解决这个问题(我是一个JS初学者)。我正试图关闭一个带有onclick标记的信息窗口。我知道你可以通过点击“x”来关闭它,但其目的是更深层次的

我的代码:

function placeMarker(location) {
    marker = new google.maps.Marker({
    position: location,
    map: map,
  });
  var infowindow = new google.maps.InfoWindow({
    content: "<a href='#' id='link' onclick='infowindow.close()'>Close</a>"
  });
  infowindow.open(map,marker);
}
功能位置标记(位置){
marker=新的google.maps.marker({
位置:位置,,
地图:地图,
});
var infowindow=new google.maps.infowindow({
内容:“”
});
信息窗口。打开(地图、标记);
}

这样的事情可能吗?谢谢

您不需要像现在这样的紧密链接
onclick='infowindow.close()
。InfoWindow对象已具有“关闭”图标X

要确保在任何给定时间只打开一个InfoWindow,请将其设置为单个全局对象,并以关联的标记作为参数打开:

//Global
var infowindow = new google.maps.InfoWindow({});
然后

function placeMarker(location) {
    marker = new google.maps.Marker({
    position: location,
    map: map,
  });
  infowindow = new google.maps.InfoWindow({
    position: location,
    content: "Hello from this marker"
  });
  infowindow.open(map,marker);
 }

是的,您的实施将按照您列出的方式工作,前提是:

  • 您使用一个公共信息窗口
  • infowindow
    变量是全局变量(在任何函数之外定义)

  • 假设您可能有多个infoWindow实例(使用当前代码,在多次调用函数时会发生这种情况):

    您需要使用节点而不是字符串作为
    内容
    。当您这样做时,您将能够在函数中使用对infowindow的引用(闭包),并使用
    adddomstener
    分配click函数:

    function placeMarker(location) {
        var marker = new google.maps.Marker({
                   position: location,
                   map: map,
                 }),
            infowindow = new google.maps.InfoWindow(),
            content    = document.createElement('a');
    
        content.setAttribute('href','#');
        content.appendChild(document.createTextNode('close'));
        google.maps.event.addDomListener(content,'click',
                                         function(){infowindow.close();})
        infowindow.setContent(content);
        infowindow.open(map,marker);
    }
    

    OP特别提到X关闭图标不够。@ChadKillingsworth,我看到了,但我无法想象“更深”的目的是什么。:-)