如何添加谷歌地图监听器点击一个标记数组内的InfoWindows数组?

时间:2014-02-08 01:08:13

标签: javascript arrays google-maps cordova

它告诉我“未捕获的TypeError:无法调用未定义的方法'打开'

这是我的代码

var markers = new Array();

            for(var i = 0; i < res.length; i = i + 4){
                if(res[i] == "") break;
                shopLatLng = new google.maps.LatLng(res[i + 2], res[i+3]);                  

                markers[i] = new google.maps.Marker({
                    position: shopLatLng,
                    map: map,
                    title: res[i],
                });

                var infoWindows = new Array();
                infoWindows[i] = new google.maps.InfoWindow({
                    content: res[i + 1]
                });


                google.maps.event.addListener(markers[i], 'click', function(){
                    infoWindows[i].open(map, markers[i]);                       
                });



                //console.log("Loja: " + res[i]);
                //console.log("Categoria: " + res[i + 1]);                                  
                //console.log("Latitude: " + res[i + 2]);
                //console.log("Longitude: " + res[i + 3]);              
            }

var“res”是一个字符串数组......

1 个答案:

答案 0 :(得分:1)

猜测您的变量i未获得异步点击事件的closure

尝试更改此内容:

google.maps.event.addListener(markers[i], 'click', function () {
    infoWindows[i].open(map, markers[i]);
});

到此:

(function (i) {
    google.maps.event.addListener(markers[i], 'click', function () {
        infoWindows[i].open(map, markers[i]);
    });
})(i);