手动关闭后,Google Maps API - 信息窗口不会重新打开

时间:2013-11-28 14:10:36

标签: google-maps infowindow

我得到了以下可以正常使用的代码 - Fiddle。它设置了一些标记,并为它们使用了1个infowindow 但是当我通过改变这个来改变infowindow内容为div元素时:

infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);

有了这个:

document.getElementById("info").innerHTML=locations[i][0];    
infowindow.setContent(document.getElementById("info"));
infowindow.open(map, marker);

发生了一些奇怪的事情 - 当点击标记时,infowindow仍会显示,直到你决定通过点击'x'来关闭infowindow。之后,当您单击标记时,信息窗将不会再次打开。

链接问题小提琴 - here。知道是什么导致了这个吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

知道造成这种情况的原因是什么吗?

是。由

infowindow.setContent(document.getElementById("info"));

您正在将<div id="info">移至infowindow。这很好,直到你关闭infowindow,因为当你关闭infowindow时,你从DOM中删除<div id="info">!之后,

document.getElementById("info").innerHTML=locations[i][0]; 
由于<div id="info">不再存在,

会引发一个execption:

  

未捕获的TypeError:无法设置null

的属性'innerHTML'

你应该找到另一种方法。我会从HTML中删除<div id="info"></div>并改为使用此代码:

var content='<div id="info">'+locations[i][0]+'</div>';
infowindow.setContent(content);
infowindow.open(map, marker);

见分叉小提琴 - &gt;的 http://jsfiddle.net/E2CxC/