2015-09-27 17 views
5

yüklenmeden önce google maps API'sinin yüklenmesini beklemeden bekletme Özel bir bindirme tanımladığım ayrı bir label.js dosyası var. Onun prototip olarak google.maps.OverlayView kullanır:google.maps.OverlayView türetilmiş sınıf

Label.prototype = new google.maps.OverlayView(); 

Bu benim index.html dosyasında dosyayı js için komut dosyası etiketlerini nereye yerleştirileceğini emin değilim. haritalar API bir hataya neden henüz yüklenmediği durumlarda ise

.... 
     <script async defer 
      src="https://maps.googleapis.com/maps/api/js?... 
     </script> 
     <script src="js/label.js"></script> 
    </body> 
</html> 

label.js dosyası hemen yüklenir: google haritalar aşağıda komut dosyası etiketleri şöyle etiketi yükleme yerleştirirseniz.

Şu anda manuel haritalarda yüklenen geri arama JS yükleyerek bu çözmek:

function initMap() { 
    gMap = new google.maps.Map(document.getElementById(strMapDivName), { 
     center: {lat: 21, lng: 78}, 
     mapTypeId: google.maps.MapTypeId.HYBRID, 
     zoom: 6, 
     heading: 90, 
     tilt: 0 
    }); 

    // Load label.js afterwards so we can be sure that the google maps api has loaded 
    var fileref=document.createElement('script') 
    fileref.setAttribute("type","text/javascript") 
    fileref.setAttribute("src", "js/label.js") 

    document.getElementsByTagName("head")[0].appendChild(fileref) 

} 

bu çözmek için en iyi yolu var mı?

+4

Ben google hala bu noktada tanımlanmamış olduğundan zaman uyumsuz –

cevap

1

Sanırım bunu yapmanın yolu iyi. Harita nesnesinin hazır olduğundan emin olmak isterseniz, harita idle olay dinleyicisini de kullanabilirsiniz.

google.maps.event.addListenerOnce(map, 'idle', function() { 
    // map is ready 
}); 
+2

sayılı haritaları-API yüklemek iyi yolu olduğunu söyleyebilirim. Komut dosyasının URL'sinden geri arama kullanmalısınız. '' – Sw0ut

+0

'google', 'boşta' dinleyicinin içinde tanımlanmamıştır. ? Bundan emin misin? – MrUpsidown

+1

Evet, komut dosyası eşzamansız olarak yüklenmiştir, bu nedenle çözümünüz yalnızca bir zaman aşımı ayarladığınızda çalışır. 10 dakika önce bu problemi yaşadım: 3 – Sw0ut

1

İşte benim için yaptığım ve çalıştığım bir genel.

1) Google haritaları yüklendikten sonra çalıştırmak istediğiniz işlevi tanımlayın fonksiyonunu

function WhenGoogleLoadedDo(fnt) 
    { 
    if(typeof google != 'undefined') 
     fnt(); 
    else 
     setTimeout(function() 
     {(function(fnt) 
      { 
      WhenGoogleLoadedDo(fnt) 
      })(fnt)}, 500); // You can set timer as you wish // 
    } 

3) Betiğinizde böyle ToExecuteAfterLoaded Çağrı Bekliyor

function ToExecuteAfterLoaded() 
    { 
    // Doing something here /// 
    console.log("Executing this function"); // per example // 
    } 

2)

WhenGoogleLoadedDo(ToExecuteAfterLoaded); 
İlgili konular