2009-04-19 10 views
0

Hallo, ich versuche, eine dicke Box zu einem Overlay in googlemaps hinzuzufügen. Auf meiner JQuery-Onload-Funktion rufe ich die folgende Funktion auf. Die Karte funktioniert gut. Aber wenn die dicke Box scheinbar nicht aufgerufen wird. Das ist die Linie, dieAufruf von Thickbox aus einer js-Datei

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

Die ganze Funktion

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(); 
    } 
+0

Bitte klären Sie Ihren Beispielquellcode – pocheptsov

+0

so, machte ein bisschen Chaos mit meinem Beitrag. Ich habe es aktualisiert :) – frosty

Antwort

2

Ihre Hinzufügen der Link, der Sie die thickbox auf das DOM aktivieren möchten funktioniert, nachdem die thickbox Funktion bereits aufgerufen wurde. Dies liegt daran, dass Sie den Link dynamisch innerhalb der map.openInfoWindowHtml-Funktion erstellen. Sie müssen die Thickbox-Funktion aufrufen, nachdem diese Funktion ausgeführt wurde.

Problem ist, ich habe nur die Thickbox docs angeschaut und Thickbox wird in der Datei thickbox.js eingerichtet, sobald das DOM lädt, was zu früh für Sie ist. Sie könnten versuchen, die setTimeout-Funktion, dies zu ändern:

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

ich sein kann nicht 100% sicher, dass dies funktionieren wird, aber das ist der Kern des Problems.

+0

Sie haben absolut recht. Das neu erstellte Thickbox-Element muss mit der Funktion tb_init initialisiert werden. Es gibt keinen Grund, dies sollte nicht funktionieren, wenn er/sie andere Probleme in ihrem Code hat. – KyleFarris