Google maps infoWindow - уничтожает контент при закрытии? - PullRequest
2 голосов
/ 25 августа 2011

Я использую карты 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, сгенерированный таким образом. Или мой подход к решению здесь ошибочен?

1 Ответ

2 голосов
/ 26 августа 2011

Есть проблема сейчас. Вы устанавливаете объект div как содержимое infoWindow . Таким образом, весь объект уничтожается после закрытия infoWindow . Вот исправление, задающее только HTML, а не объект как контент.

infowindow = new google.maps.InfoWindow({ content: $('infoWindowContent').get('html') });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...