它告诉我“未捕获的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”是一个字符串数组......
答案 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);