2012-02-06 9 views
0

マーカーの配列にopenInfoWindowHtmlを配置する際に問題がありました。 forループ内にaddListenerがなければ、map.addOverlay(markerArray [i])は正常に動作します。私のコードで何が間違っていますか?ありがとう!マーカーの配列にopenInfoWindowHtmlを配置する

function addMarkers(){ 
     var tempMarker; 
     var blueIcon = new GIcon(G_DEFAULT_ICON); 
     blueIcon.image = "http://www...com/.../.png"; 

     // Set up our GMarkerOptions object 
     markerOptions = { icon:blueIcon }; 
     for(ctr=0;ctr<default_address.length;ctr++){ 
      tempLatLng = new GLatLng(default_address[ctr][0], default_address[ctr][1]); 
      tempMarker = new GMarker(tempLatLng,markerOptions); 
      GEvent.addListener(tempMarker, "click", function() 
       {tempMarker.openInfoWindowHtml("HI")}); 
      markerArray.push(tempMarker); 
     } 
      displayMarkers(); 

    } 
    function displayMarkers(){ 
     map.clearOverlays(); 
     var i; 
     for (i = 0; i < markerArray.length; i++) { 
      map.addOverlay(markerArray[i]); 
     } 
    } 

答えて

1

あなたがmarker.openInfoWindowHtmlを持っていますが、あるもの、それがこの機能ではどこにも定義されていません。それはおそらくmarkerArray[i].openInfoWindowHtmlでしょうか?私は、markerArrayがマーカーオブジェクトを含むグローバル変数であると仮定しています。

更新:すべてのマーカーが最後のマーカーの位置(および内容)に情報ウィンドウを開く問題に関して、これは機能するはずです。

function addMarkers(){ 
    ... 
      for(ctr=0;ctr<default_address.length;ctr++){ 
       tempLatLng = new GLatLng(default_address[ctr][0], default_address[ctr][1]); 
       tempMarker = new GMarker(tempLatLng,markerOptions); 

       // add an event listener for this marker 
       bindInfoWindow(tempMarker, "HI"); 

       markerArray.push(tempMarker); 
      } 
} 

// create a new global function for this 
function bindInfoWindow(marker, html) { 
    GEvent.addListener(tempMarker, "click", function() { 
      marker.openInfoWindowHtml(html) 
    }); 
} 
+0

イムので、ダム..しかし、私は...新しい問題私はマーカーをクリックすると...、情報ウィンドウではなく、マップ内の各マーカーの上に置かれ、最後のマーカーの飛び出しを持っていた理由そうです?私は上記のコードを編集しました。ありがとうございます –

+0

ループ内でイベントリスナーを設定しているからです。私はこれを修正するいくつかのコードで私の答えを更新します。 – duncan

+0

ありがとうございました!私はそれがうまくいってとてもうれしいです!再度、感謝します! –

関連する問題