コードは次のように非常に単純です。
var populateGoogleMap = function (points) {
    for (i = points.length - 1; i >= 0; i--) {
        var marker = new google.maps.Marker({
            map: map,
            draggable: true,
            animation: google.maps.Animation.DROP,
            position: new google.maps.LatLng(point.target.x, point.target.y)
        });
        google.maps.event.addListener(marker, 'click', function (e) {
            toggleBounce(marker);
        });
        nodes[i].marker = marker;
    }
};
markerintoggleBounce(marker)は常に最後に作成されることmarkerがわかります。この問題について少し考えてみたところ、関数を変更することで解決策が見つかりました。関数内のループを削除し、他の場所でループを使用してこの関数を複数回呼び出しました。だから基本的に今はなるfor (i = 0; i < points.length; i++) { populateGoogleMap(point); }。
この動作は Google Maps API が意図したものですか? 変数は現在のコンテキストの変数を参照する必要があるため、これは多くの人を混乱させる可能性があると思います。