2012-02-20 4 views
8

google.mapsモジュールを定義するためにコールバックを指定する必要があると文書化されていますか?これはバグですか?gmapを非同期にロードするときにコールバックが指定されていない場合は、他の必要なGoogleマップスクリプトがロードされません。

次のコードは、Googleマップのモジュールをロードしません:

<!DOCTYPE html> 
<html> 
    <head> 
    <title> 
     Google Maps JavaScript API v3 Example: Asynchronous Map Simple 
    </title> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="UTF-8"> 
    <style type="text/css"> 
     html { height: 100% } 
     body { height: 100%; margin: 0; padding: 0 } 
     #map_canvas { height: 100% } 
    </style> 
    <script type="text/javascript"> 
     function initialize() { 
     var myOptions = { 
      zoom: 8, 
      center: new google.maps.LatLng(-34.397, 150.644), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

     var map = new google.maps.Map(document.getElementById('map_canvas'), 
      myOptions); 
     } 

     function loadScript() { 
     var script = document.createElement('script'); 
     script.type = 'text/javascript'; 
     script.src = 'http://maps.googleapis.com/maps/api/js?v=3.6&key=myKey&sensor=false' //adding 'callback=something' gets the maps module to load 
     document.body.appendChild(script); 
     } 

     window.onload = loadScript; 
    </script> 
    </head> 
    <body> 
    <div id="map_canvas"></div> 
    </body> 
</html> 

編集 - そうするために

に答えるために、応答を、あなたは に応じて、独自のタグを挿入することができますwindow.onloadイベントまたは関数呼び出しが必要ですが、さらに Maps JavaScript APIコードが完全に読み込まれるまで、 アプリケーションコードの実行を遅らせるようにMaps JavaScript APIブートストラップに指示する必要があります。 コールバックパラメータを使用します。このパラメータは、APIのロード完了時に実行する関数 を引数としてとります。

これは、コールバックを持たないとAPIのどれもロードされないことを意味しますか?コードが完全にロードされていてもコードがコールバックパラメータなしでロードされないとは言わないときにコールバックパラメータを使用して関数を実行できます。

答えて

0
+0

私はあなたの応答のための私の質問を編集しました。 – pllee

+0

言葉遣いがちょっと変わっているかもしれませんが、コールバックパラメータを指定する必要があることは私には明らかです。これは、非同期にスクリプトを読み込むための非常に一般的なパターンです。 – puckhead

+0

もし彼らが5月の代わりにしなければならないと言えば、私はこの質問を投稿しないでしょう。彼らはセンサパラメータを強制し、別の「必須」パラメータで同じ機能を持たせるのが良いと開発者に警告します。これは私のバグのように聞こえてきます。 – pllee

関連する問題