-3

这是我的代码,其中有一个用于创建多边形的循环,并为它们“单击”事件侦听器,其中将显示一个信息窗口。

    var GoogleMap,polyInfoWindow,polygon,getPath,getInfo;
    function PolygonToMap()
    {
        GoogleMap = // map initialization   //;
        polyInfoWindow= // Infowindow initialization for polygons   //;

        //  for loop of number polygons top create
        {
            getPath=    //  get path for new polygon    // ;
            polygon = new google.maps.Polygon({ 
                paths: getPath, 
                strokeColor: "#0071bc", 
                strokeOpacity: 1, 
                strokeWeight: 2, 
                fillColor: "#000000", 
                fillOpacity: 0.1, 
                map:GoogleMap 
            });

            getInfo=    // get new data for new polygon //  ;
            google.maps.event.addListener(polygon,"click",function(event){
                polyInfoWindow.setContent(getInfo);
                polyInfoWindow.open(GoogleMap);
                polyInfoWindow.setPosition(event.latLng);
            });

        }
    }

这里的多边形可以很好地生成,但是在多边形上单击所有多边形时,显示的信息窗口数据是相同的(信息窗口与循环中最后一个多边形信息数据的数据)。这意味着在每个多边形创建的 for 循环中,在事件中添加侦听器 infowindows 数据将覆盖所有多边形 infowindw。

所以,我需要的是每个多边形在信息窗口中显示其数据将“点击”,即每个多边形信息窗口的差异数据。

4

1 回答 1

0

将信息窗口与多边形相关联的最简单方法是使用函数闭包。

例子

于 2012-10-26T12:47:33.543 回答