我在我的网站上使用谷歌地图。我有一个infoWindow,我填充了这样的内容:
infowindow = new google.maps.InfoWindow({ content: $('infoWindowContent') });
google.maps.event.addListener(mapMarker, 'click', function() {
$('infoWindowContent').setStyle('display','block');
$('iw_companyName').innerHTML = "stuff";
$('iw_recommends').innerHTML = "stuff";
$('iw_activity').innerHTML = "stuff";
infowindow.open(googleMap,item);
});
$('infoWindowContent')
是我在html中创建的页面元素:
<div id="mapholder" class="box">
<div id="infoWindowContent" style="display:none;">
<div class="center">
<h4><a id="iw_companyName"></a></h4>
<div>Activity: <a id="iw_activity"></a></div>
<div id="iw_recommends"></div>
</div>
</div>
<div id="map_canvas"></div>
</div>
因此,在创建页面时,内容是不可见的。当用户单击标记时,infoWindow将出现在那里,并使用适当的值填充内容。如果用户单击另一个标记,则infoWindow会移动,并且其值会更改。
问题是当用户点击“&#39; x&#39;信息窗口顶部的按钮关闭它。关闭功能正常,但当用户再次单击标记时,我收到以下错误:
$("infoWindowContent") is null
[Break On This Error] $('infoWindowContent').setStyle('display','block');
因此,当infoWindow关闭时,$('infoWindowContent')
被销毁。
我如何解决这个问题?每次用户点击标记时,我都不想在javascript中构建新的infoWindowContent,因为阅读/理解/更改以这种方式生成的html要困难得多。或者我接近解决方案的方式有缺陷吗?
答案 0 :(得分:2)
现在遇到了问题。您将div对象设置为 infoWindow 的内容。因此,关闭 infoWindow 后,整个对象都会被销毁。这是修复,只设置HTML,而不是对象作为内容。
infowindow = new google.maps.InfoWindow({ content: $('infoWindowContent').get('html') });