2011-03-30 86 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));