Google InfoWindow没有在for循环中加载

时间:2014-09-04 11:06:25

标签: javascript google-maps for-loop google-maps-api-3

我已将以下代码添加到我网站上的Google地图中。地图包含从WordPress后端设置的坐标拉出的许多点。

我还想要包含一些静态点,这些静态点将始终保留在地图上并且正在对其坐标进行硬编码。

以下是我正在使用的代码,会发生的是代码显示第一个标记但不显示信息框。因此,代码停止并且不会继续通过for循环。问题出在return function()位,但我不确定如何使其正常工作。

var infowindow = new google.maps.InfoWindow({maxWidth: 185});
var setMarker;
var setMarkers = new Array();

var setLocations = [
['<h4>Location1</h4>', 53.4264,-6.2499, '/wp-content/themes/path/to/airport_icon.png'],
['<h4>Location2</h4>', 53.3461,-6.2969, '/wp-content/themes/path/to/train_icon.png'],
['<h4>Location3</h4>', 53.3532,-6.2468, '/wp-content/themes/path/to/train_icon.png'],
['<h4>Location4</h4>', 53.4264,-6.2499, '/wp-content/themes/path/to/dvc_icon.png'],
['<h4>Location5</h4>', 53.4264,-6.2499, '/wp-content/themes/path/to/dvc_icon.png'],
        ];



for (var i = 0; i < setLocations.length; i++) {  
                marker = new google.maps.Marker({
                map: map,
                position: new google.maps.LatLng(setLocations[i][1], setLocations[i][2]),
                icon : setLocations[i][3],
        });
setMarkers.push(setMarker);

google.maps.event.addListener(setMarker, 'click', (function(setMarker, i) {
                return function() {
                infowindow.setContent(setLocations[i][0]);
                infowindow.open(map, setMarker);
                }
        })(setMarker, i));
}

1 个答案:

答案 0 :(得分:1)

在for循环中定义setMarker变量并将其推送到marker数组:

for (var i = 0; i < setLocations.length; i++) {

    var setMarker = new google.maps.Marker({
        map: map,
        position: new google.maps.LatLng(setLocations[i][1], setLocations[i][2])
    });

    google.maps.event.addListener(setMarker, 'click', (function (setMarker, i) {
        return function () {
            infowindow.setContent(setLocations[i][0]);
            infowindow.open(map, setMarker);
        }
    })(setMarker, i));

    setMarkers.push(setMarker);
}

JSFiddle demo