2013-11-14 97 views
1

我遇到了一個奇怪的錯誤。我試圖加載谷歌地球庫,但這樣做時,我得到錯誤「ERR_CREATE_PLUGIN」Google地球「ERR_CREATE_PLUGIN」

下面的代碼不工作:

<script src="http://www.google.com/jsapi"></script> 
<script> 
    google.load("earth", "1"); 

    var ge = null; 

    function init() { 
     google.earth.createInstance("map3d", initCallback, failureCallback); 
    } 

    function initCallback(object) { 
     ge = object; 
     ge.getWindow().setVisibility(true); 
    } 

    function failureCallback(object) { 
    } 
</script> 
</head> 
<body onload='init()' id='body'> 
    <center> 
     <div id='map3d' 
      style='border: 1px solid silver; height: 600px; width: 800px;'></div> 
    </center> 
</body> 

儘管此代碼不:

<script type="text/javascript"> 
    google.load("earth", "1"); 

    var ge = null; 

    function initCallback(object) { 
     ge = object; 
     ge.getWindow().setVisibility(true); 
    } 

    function failureCallback(object) { 
    } 

    $(document).ready(function() { 


     google.earth.createInstance("map3d", initCallback, failureCallback);  
    }); 
</script> 

回答

3

不能工作的原因是因爲jquery可能會在Google Earth API之前加載。

google.earth.createInstance()google.load()已完成之前被jquery調用$(document).ready()

爲確保在調用createInstance()之前正確加載所有內容 - 只需從Google loader通過google.load()方法加載jquery和地球api。這樣,您就可以使用setOnLoadCallback方法知道什麼時候一切準備就緒。即

<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load("jquery", "1"); 
    google.load("earth", "1"); 
    google.setOnLoadCallback(function() { 
    //Place init code here instead of $(document).ready() 
    google.earth.createInstance("map3d", initCallback, failureCallback); 
    }); 

    // etc...