2011-03-30 87 views
0

大家好,我在這裏指出一個latlng數組在谷歌地圖。我已經完成了標記,但無法指向標記標題? 所以,我把GEvent,即addlistener只顯示一個標題。如何在谷歌地圖v2中添加標記標題?

for (var i = 0; i < g_listOfBusinessDetails.length ;i++) 
    { 
     point = new GLatLng(g_listOfBusinessDetails[i].mapLocation.latitude, g_listOfBusinessDetails[i].mapLocation.longitude); 
     map.setCenter(point, 2); 
     var marker = new GMarker(point); 
     map.addOverlay(marker); 
     GEvent.addListener(marker, "click", function() { 
      marker.openInfoWindowHtml(g_listOfBusinessDetails[i].name); 
     }); 

    } 
+0

如果你的意思是,你看到的只是一個信息窗口,這是不可能的多開一個。如果你需要更多,那麼你將不得不添加,然後作爲HTML覆蓋。 – 2011-03-30 06:26:05

回答

1

這是一個很常見的JavaScript的問題 - 你可以看到一個類似的問題問here和也有一個不錯的blog post解釋它。問題是,在函數內部使用的變量和i以及g_listOfBusinessDetails未綁定到您調用GEvent.addListener時的值。在click事件中,函數會隨着他們在那個時間點的任何值運行(例如i大概是g_listOfBusinessDetails.length)。

你可以結合他們所要求的呼籲,對您的標記和標題創建處理函數,像這樣一個工廠函數:

GEvent.addListener(marker, "click", (function(myMarker, title) { 
    return function() { 
     myMarker.openInfoWindowHtml(title); 
    } 
})(marker, g_listOfBusinessDetails[i].name));