关闭onclick javascript谷歌地图的信息窗口

时间:2013-02-22 16:20:02

标签: google-maps-api-3 infowindow

我正在尝试做一些非常简单的事情,但是搜索已经空洞,出于某种原因我无法解决这个问题(我是一个JS初学者)。我试图通过标记中的onclick关闭infowindow。我知道你可以点击“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);
}

这样的事情可能吗?感谢

3 个答案:

答案 0 :(得分:2)

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

您需要使用节点而不是字符串content。执行此操作时,您将能够在函数(闭包)中使用对infowindow的引用,并使用addDomListener分配单击函数:

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);
}

答案 1 :(得分:1)

是的,您的实施将按照您的列出假设:

  1. 您使用单一的常见信息
  2. infowindow变量是全局的(在任何函数之外定义)

答案 2 :(得分:0)

您不需要像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);
 }