【问题标题】:Google maps infoWindow - destroys content on close?谷歌地图 infoWindow - 关闭时破坏内容?
【发布时间】:2011-08-25 09:24:08
【问题描述】:

我在我的网站上使用谷歌地图。我有一个 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 会移动,并更改其值。

问题是当用户单击信息窗口顶部的“x”按钮将其关闭时。关闭功能工作正常,但是当用户再次单击标记时,我收到以下错误:

$("infoWindowContent") is null
[Break On This Error] $('infoWindowContent').setStyle('display','block');

所以,$('infoWindowContent') 在 infoWindow 关闭时被销毁了。

我该如何解决这个问题?每次用户单击标记时,我真的不想在 javascript 中构造一个新的 infoWindowContent,因为以这种方式生成的 html 更难阅读/理解/更改。还是我在这里解决问题的方法有缺陷?

【问题讨论】:

    标签: javascript google-maps-api-3 mootools


    【解决方案1】:

    现在有问题了。您将 div 对象设置为 infoWindow 的内容。所以,整个对象在关闭infoWindow之后就被销毁了。这是修复,仅将 HTML 设置为内容,而不是对象。

    infowindow = new google.maps.InfoWindow({ content: $('infoWindowContent').get('html') });
    

    【讨论】:

    • (Tusar,下次编辑你以前的答案,而不是发布一个新的然后删除另一个。如果你删除太多帖子太快,你可能会遇到麻烦。不要删除东西除非它们确实不正确。不要仅仅因为它们没有得到投票或答案而删除您的问题。)
    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2011-10-07
    相关资源
    最近更新 更多