Domanda

Ciao io sto cercando di aggiungere box di spessore per una sovrapposizione di Googlemaps. Sulla mia funzione onload JQuery che io chiamo la seguente funzione. La mappa funziona bene. Ma quando la casella di spessore non sembra di essere chiamato. Questa è la linea che funziona

<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>

L'intera funzione

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();
    }
È stato utile?

Soluzione

Il tuo aggiungendo il link che si desidera attivare la thickbox al DOM dopo la funzione thickbox è già stato chiamato. Questo perché si sta creando il collegamento in modo dinamico all'interno della funzione map.openInfoWindowHtml. È necessario chiamare la funzione thickbox dopo è stata eseguita questa funzione.

Il problema è che ho appena guardato la documentazione thickbox e thickbox viene istituito presso il file non appena i thickbox.js come i carichi DOM, che è troppo presto per voi. Si potrebbe provare a modificare la funzione setTimeout a questo:

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

Non posso essere sicuro al 100% che funzionerà, ma questo è il nocciolo del problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top