2011-06-27 8 views
1

XMLからマーカーをロードしています。私は$(document).ready()とajaxで地図開始を完了しています。私はこの問題を研究し、ドキュメントの準備が整う前にマップを読み込むことが原因で発生する時間の大部分を見ました。なぜ私はそれを取得していますか?google map main.jsの "a is null"(1121行目)

以下のコードでi console.log()を実行すると完全な配列が返されますが、マップには完全な同じ情報が表示されません。ここ

は私のコードです:

$(document).ready(function(){ 
     var myMarkers = new Array; 

     $.ajax({ 
     url: "tire-banks.xml", 
     dataType: ($.browser.msie) ? "text" : "xml", 
     async: false, 
     success: function(data){ 
           var xml;  
           if (typeof data == "string") { 
            xml = new ActiveXObject("Microsoft.XMLDOM"); 
            // xml.async = false; 
            xml.loadXML(data); 
           } else { 
            xml = data; 
           } 

           $(xml).find("location").each(function(){ 
            var locAddress = $(this).find("city").text() + "," + $(this).find("state").text() ; 
            var cc = $(this).find("cc").text(); 
            var bcc; 
            if ($(this).find("bcc")){ 
             bcc = $(this).find("bcc").text(); 
             }else{ 
             bcc = " - "; 
             } 
            var vendor =$(this).find("vendor").text(); 
            var hours = $(this).find("hours").text(); 
            var HTMLString = "<div><h3>" + locAddress + "</h3>Vendor: " + vendor + "<br />CC#: " + cc + "<br />Bulk CC#: " + bcc + "<br />Hours: " + hours + "</div>" ; 

            myMarkers.push({ address: locAddress, html: HTMLString}); 
           }); 

           },//END SUCCSESS 
     error: function(){ 
     }, 
     complete: function(){ 
      console.log(myMarkers);//returns correct information 
      $("#map").gMap({ markers: myMarkers, address: "United States", zoom: 4 });//incomplete data and generates a is null error in firebug 
     } 
    });//END AJAX CALL 
    }); 
+0

のsetTimeoutでそれをラップし、それがそのように動作するかどうかを確認する必要があります... :) – Val

+0

はええ、マップを描くの周りに5秒のタイムアウトを追加しましたそれは何もしなかった。しかし、良いアイデア。 –

+0

'myMarkers'については、他のコードを含んでいない限り、グローバル変数ではないようです:)' doc ... ready()... 'の直前/直前に' var myMarkers; – Val

答えて

5

あなたは上のマップ機能を呼び出しているのdivがページ上に存在しない場合、私はこのエラーを受け取った唯一の時間です。

+0

私は関数を削除しても受け取っています.. – Dimple

+0

良い答えです、このエラーはコピー貼り付けの結果です – baaroz

-1

このエラーは、通常、自分のコードにjavascriptエラーがあると発生します。次の点を除いて、あなたがここで提供した内容から明らかなものはありません。

var myMarkers = new Array; 

実際には?どちらか

var myMarkers = new Array(); 

か(優先)

var myMarkers = []; 
+0

'new X;'はJavaScriptの 'new X();'に相当します。 – Havvy

+0

実際に動作します。しかし、これはベストプラクティスではありません(例:JSLintはエラーとして報告します) – duncan