2011-10-26 15 views
0

GoogleのAPIを使用してダイナミックマップを作成しています。私は、動的に各マーカーのための情報ボックスを適用するためのマップを取得しようとしている...と私はそれを把握することはできません。シンプルな動的Googleマップの問題

http://www.zephyrusdevelopment.com/clients/electrotrack/map2.html

+0

それは例へのリンクを投稿することは良いですが、それが一般的に良いでしょう*も*ポストスニペットから関連するコードは、あなたが試したことを見ることができます。 – nrabinowitz

+0

申し訳ありません、私は次回それを行います。私はそれを考え出した。 – user981408

答えて

0

あなたは、古典的なループ・プラスに陥るしているように見えます

while(i<=(a_l-1)) { 
    // snip 
    var marker = new google.maps.Marker({ 
     // snip 
    }); 
    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.open(map,marker); 
    }); 
    // snip 
} 

問題が原因閉鎖はJavascriptで仕事のやり方に、ハンドラ関数は、それが後も、変数への永続的な参照を保持します、ということです:簡略化された形で次のようになります-closureエラー、新しいオブジェクトに割り当てられます。最終結果:すべてのハンドラーはに割り当てられた最後のオブジェクトを参照します。

これを解決するにはいくつかの方法があります。私は通常、ハンドラのスコープに正しいオブジェクトをキャプチャクリックハンドラを割り当てるために別の関数を使用します。

function addClickHandler(marker) { 
    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.open(map,marker); 
    }); 
} 

while(i<=(a_l-1)) { 
    var marker = new google.maps.Marker({ 
     // snip 
    }); 
    addClickHandler(marker); 
} 
+0

はい、私がやったことは、ループの外にハンドラ全体が置かれているように見えます。あなたの助けをありがとう! :) – user981408

+0

これが正しい答えだったら、隣にあるチェックマークをクリックして正しい印を付けることができます - ありがとう! – nrabinowitz