【问题标题】:Infowindows Displayed on the Same Marker [duplicate]显示在同一标记上的信息窗口 [重复]
【发布时间】:2013-07-19 13:43:23
【问题描述】:
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);
                });
            }

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

【问题讨论】:

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


    【解决方案1】:

    由于您的标记变量没有在您的 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);
        });        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-27
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 2013-11-26
      • 2011-02-24
      相关资源
      最近更新 更多