【问题标题】:Google Maps API v3 Multiple Info Boxes not opening on clickGoogle Maps API v3 多个信息框在点击时未打开
【发布时间】:2013-12-29 14:29:36
【问题描述】:

谁能解释一下为什么我的谷歌地图信息窗口只在左下角的标记处打开? 小提琴见这里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);
    });

}

【问题讨论】:

    标签: google-maps infowindow


    【解决方案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);
            });
        }
    

    【讨论】:

    • 非常感谢,太好了。这是一个闭包的例子吗?
    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 2012-06-03
    • 2013-04-07
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多