我得到了以下可以正常使用的代码 - 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。知道是什么导致了这个吗?
感谢您的帮助!
答案 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/ 强>