如何在谷歌地图v2中添加标记?

时间:2011-03-30 03:33:08

标签: javascript google-maps jquery-mobile

大家好,我指的是谷歌地图中的一系列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);
        });

    }

1 个答案:

答案 0 :(得分:1)

这是一个非常常见的JavaScript问题 - 您可以看到类似的问题here,并且还有一个很好的blog post解释它。问题是您在函数中使用的变量markeri以及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));