信息窗口显示在同一标记上

Infowindows Displayed on the Same Marker

本文关键字:信息窗 窗口 显示 信息      更新时间:2023-09-26
for (var i = 0; i < locs.length; i++) {
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng(locs[i][0], locs[i][1])
                    , map: map
                    , title: "Hello World!"
                    , icon: iconImage
                    , clickable: true
                });
                marker.info = new google.maps.InfoWindow({
                    content: contentString
                });
                google.maps.event.addListener(marker, 'click', function () {
                    marker.info.open(map, marker);
                });
            }

所有标记在地图上都显示得很好,但问题是当我单击以查看信息窗口时 - 信息窗口始终显示在同一个标记上。怎么了?

由于您的标记变量没有保留在foreach循环的范围之外,因此我认为maps api没有正确跟踪它们。使用标记将活动标记保存在数组中是一种很好的做法,这样您就可以在以后处理它们(或以其他方式管理它们(。尝试这样的事情:

var markers = Array(); //make sure this is scoped properly
for (var i = 0; i < locs.length; i++) {
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(locs[i][0], locs[i][1])
        , map: map
        , title: "Hello World!"
        , icon: iconImage
        , clickable: true
    });
    var index = markers.push(marker) -1;
    markers[index].info = new google.maps.InfoWindow({
        content: contentString
    });
    google.maps.event.addListener(markers[index], 'click', function () {
        marker.info.open(map, marker);
    });        
}