谷歌地图api所有infowindows都没有显示

时间:2016-02-28 13:56:38

标签: javascript google-maps google-maps-api-3 google-api google-maps-markers

我的JS中有一个小问题,

当我徘徊所有不同的标记时,他们不会显示我认为我理解为什么但我不知道如何解决它

所以有我的代码:

for (var i = 0; i < latLng.length; i++) {
    var mark = new google.maps.Marker({
        map: map,
        animation: google.maps.Animation.DROP,
        position: latLng[i]
    });

    var info = new google.maps.InfoWindow({
        content: contentString[i]
    });

    mark.addListener('mouseover', function() {
        info.open(map, mark);
        setTimeout(function() {infowindow.close()}, 5000);
    })

    mark.addListener('click', function() {
        map.setZoom(15);
        map.setCenter(myLatLng);
    });
}

latLng是一个包含{lat: alatitude, long: alongitude}等项目的数组 和contentString是一个数组,其项目如&#34; hello&#34; 它向我显示所有标记,但它仅在我的最后一个标记上显示infoWindows

我认为这是因为我的战争被下一代战队抹去了 我曾试图使用类似的阵列,但它不起作用。

for (var i = 0; i < latLng.length; i++) {
    var marks = new Array();
    var infos = new Array();

    marks.push(new google.maps.Marker({
        map: map,
        animation: google.maps.Animation.DROP,
        position: latLng[i]
    }));

    infos.push(new google.maps.InfoWindow({
        content: contentString[i]
    }));

    marks[i].addListener('mouseover', function() {
        infos[i].open(map, marks[i]);
        setTimeout(function() {infowindow.close()}, 5000);
    })

    marks[i].addListener('click', function() {
        map.setZoom(15);
        map.setCenter(myLatLng);
    });
}

1 个答案:

答案 0 :(得分:0)

我在一个函数中隔离了这个部分并且它可以工作:

var mark = new google.maps.Marker({
        map: map,
        animation: google.maps.Animation.DROP,
        position: latLng[i]
    });

    var info = new google.maps.InfoWindow({
        content: contentString[i]
    });

    mark.addListener('mouseover', function() {
        info.open(map, mark);
        setTimeout(function() {infowindow.close()}, 5000);
    })

    mark.addListener('click', function() {
        map.setZoom(15);
        map.setCenter(myLatLng);
    });