2012-02-06 40 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

IM那麼笨..但我有一個新的問題..當我在標記上單擊,在信息窗口彈出放置,而不是在地圖上的每個標記的最後標記的..爲什麼會這樣?我編輯了上面的代碼..謝謝 – 2012-02-06 14:43:45

+0

這是因爲你在循環中設置事件監聽器。我會用一些應該解決這個問題的代碼更新我的答案。 – duncan 2012-02-06 15:12:26

+0

非常感謝你!我很高興它運作良好!再次感謝! – 2012-02-07 05:00:26