-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 に答える