Google Maps API v3多个信息框无法在点击时打开

时间:2013-01-29 15:02:08

标签: google-maps infowindow

有人可以解释一下为什么我的谷歌地图信息窗口只在左下方标记处打开? 请看这里的小提琴http://jsfiddle.net/Vj3nw/7/

当我点击任何标记时,只打开左下角的标记。我希望点击的标记打开。

我认为问题是由于下面的循环,这个问题似乎有同样的问题Setting onclick to use current value of variable in loop

“你遇到的问题是javascript不使用块范围。相反,所有变量都有其包含函数的生命周期。所以在所有onclick函数中只有一个被捕获,并且它们都看到它是最终的值。”

我无法将该解决方案完全转化为我的。

非常感谢。

for (var i = 0; i < 4; i++) {
    var marker = new google.maps.Marker({
        position: flightPlanCoordinates[i],
        icon: Symbol,
        map: map
    });

    infowindow = new google.maps.InfoWindow();
    infowindow.setContent("hello");

    google.maps.event.addListener(marker, 'click', function () {
        infowindow.open(map, marker);
    });

}

1 个答案:

答案 0 :(得分:1)

生成标记并在自己的函数中添加侦听器,从循环调用,如更新的fiddle

function create_marker(i,flightPlanCoordinates,Symbol,map){
        var marker = new google.maps.Marker({
            position: flightPlanCoordinates[i],
            icon: Symbol,
            map: map
        });

        infowindow = new google.maps.InfoWindow();
        infowindow.setContent("hello" + i);

        google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,marker);
        });
    }