0

嗨,我正在尝试将厚框添加到 googlemaps 中的叠加层。在我的 JQuery onload 函数中,我调用了以下函数。地图工作正常。但是当厚框似乎没有被调用。这是行之有效的线

<a href="test.html?keepThis=true&TB_iframe=true&height=250&width=400" title="add a caption to title attribute / or leave blank" class="thickbox">Example 1</a>

整体功能

function load(lat, lng, zlevel, userKey, state) {

        map = new GMap2(document.getElementById("map"));
        map.disableDoubleClickZoom();
        map.setCenter(new GLatLng(lat, lng), zlevel);

        if (state) {

            dsp = true;

            map.addControl(new GLargeMapControl());
            GEvent.addListener(map, "click", function(overlay, latlng) {

                var zoom = map.getZoom();
                var display = '<h5 class="header-flag">Flag</h5><p class="maptext"><a href="#" onclick="javascript:openOverlay(' + latlng.lat() + ',' + latlng.lng() + ',' + zoom + ');">Click here</a> to enter your comment - 
<a href="test.html?keepThis=true&TB_iframe=true&height=250&width=400" title="add a caption to title attribute / or leave blank" class="thickbox">Example 1</a></p>';

                setTimeout(function() { map.openInfoWindowHtml(latlng, display, { maxWidth: 200 }); }, 0);
            });
        } else {


        }

        mgr = new MarkerManager(map);
        loadMarkers(userKey);
        mgr.refresh();
    }
4

1 回答 1

2

在调用了thickbox 函数之后,将要激活thickbox 的链接添加到DOM。这是因为您正在 map.openInfoWindowHtml 函数中动态创建链接。执行此函数后,您需要调用thickbox 函数。

问题是我只是查看了thickbox 文档,并且一旦DOM 加载,thickbox 就会在thickbox.js 文件中设置,这对你来说太早了。您可以尝试将 setTimeout 函数更改为:

setTimeout(function() { map.openInfoWindowHtml(latlng, display, { maxWidth: 200 }); tb_init('a.thickbox'); }, 0);

我不能 100% 确定这会奏效,但这是问题的症结所在。

于 2009-04-19T15:51:46.600 回答