0

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

当我单击任何标记时,只会打开左下角的标记。我想要点击打开的标记。

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

“您遇到的问题是 javascript 不使用块作用域。相反,所有变量都有其包含函数的生命周期。因此,在所有 onclick 函数中只捕获了一个 a,它们都看到它的最终值。”

我只是不能把那个解决方案翻译成我的。

非常感谢。

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);
    });

}
4

1 回答 1

1

生成标记并将侦听器添加到自己的函数中,从循环中调用,就像更新的小提琴一样。

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);
        });
    }
于 2013-01-29T15:58:31.043 回答