Javascript 如何在标记数组中单击添加google maps listener以获取信息窗口数组?
它告诉我“UncaughtTypeError:无法调用未定义的方法‘open’” 这是我的密码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]);
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的帮助,我的代码可以工作@我很乐意帮忙。