Я использую карты Google на своем сайте. У меня есть информационное окно, которое я заполняю следующим содержимым:
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>
Итак, когда страница создана, ее содержимое невидимо. Когда пользователь щелкает маркер, там появляется информационное окно, и содержимое заполняется соответствующими значениями. Если пользователь щелкает другой маркер, информационное окно перемещается и его значения изменяются.
Проблема в том, что пользователь нажимает кнопку «х» в верхней части информационного окна, чтобы закрыть его. Функция закрытия работает нормально, но когда пользователь снова щелкает маркер, я получаю следующую ошибку:
$("infoWindowContent") is null
[Break On This Error] $('infoWindowContent').setStyle('display','block');
Итак, $('infoWindowContent')
был уничтожен при закрытии информационного окна.
Как мне обойти это? Я действительно не хочу создавать новый infoWindowContent в javascript каждый раз, когда пользователь щелкает маркер, так как намного сложнее читать / понимать / изменять html, сгенерированный таким образом. Или мой подход к решению здесь ошибочен?