Javascript 如何在标记数组中单击添加google maps listener以获取信息窗口数组?

Javascript 如何在标记数组中单击添加google maps listener以获取信息窗口数组?,javascript,arrays,google-maps,cordova,Javascript,Arrays,Google Maps,Cordova,它告诉我“UncaughtTypeError:无法调用未定义的方法‘open’” 这是我的密码 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]);

它告诉我“UncaughtTypeError:无法调用未定义的方法‘open’”

这是我的密码

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 markers=new Array();
对于(变量i=0;i

变量“res”是一个字符串数组…

只是猜测您的变量
i
没有得到异步单击事件的
闭包

尝试更改此选项:

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

在循环之外声明infoWindows数组,否则每次迭代都会覆盖它。感谢您的帮助和@bits的帮助,我的代码可以工作@我很乐意帮忙。