大家好,我指的是谷歌地图中的一系列latlng。我已经完成了那些标记,但不能指向标记标题? 所以,我把GEvent,即addlistener只显示一个标题。
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 :(得分:1)
这是一个非常常见的JavaScript问题 - 您可以看到类似的问题here,并且还有一个很好的blog post解释它。问题是您在函数中使用的变量marker
和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));