打开InfoWindow时出错(google maps api)

时间:2017-09-11 08:08:02

标签: javascript jquery google-maps

我收到了错误" 无法读取属性'打开'未定义的"在尝试在Google Maps API中打开InfoWindow时。但是当我在' marker [i] .addListener '之外调用 infoWindows [i] .setMap(map)时一切正常。这是我的代码

var devices = new Array();
var marker = new Array();
var infoWindows = new Array();
devices = <?= json_encode($devices); ?>
function initMap() {
    map = new google.maps.Map(document.getElementById('map_canvas'), {
        center: {lat: 49.062415, lng: 31.704558},
        zoom: 6,
    });
    initMarkers();
}

function initMarkers(){
    for(var i=0; i< devices.length; i++){
        marker[i] = new google.maps.Marker({
            position: {lat: parseFloat(devices[i]['lat']), lng: 
                parseFloat(devices[i]['lon'])
            },
            map: map,
            icon: mIcon,
        });
        infoWindows[i] = new google.maps.InfoWindow({content: devices[i]['infoData']});
        marker[i].setMap(map);
        marker[i].addListener('click', function() {
            infoWindows[i].open(map, marker[i]);
        });
    }
}

1 个答案:

答案 0 :(得分:0)

这是一个范围关闭问题 - 你可以通过调用一个函数来修复它,使i保持不变,但你应该稍微阅读它。

marker[i].addListener('click', function (val) {
    return function () {
        infoWindows[val].open(map, marker[val]);
    };
}(i));