0

Googleマップの情報ウィンドウが左下のマーカーでしか開いていない理由を誰かに説明してもらえますか?フィドルについてはこちらをご覧くださいhttp://jsfiddle.net/Vj3nw/7/

いずれかのマーカーをクリックすると、左下のマーカーのみが開きます。クリックして開くマーカーをお願いします。

問題は以下のループが原因であると思います。この質問にも同じ問題があるようです。onclickを設定してループ内の変数の現在の値を使用する

「あなたが直面していた問題は、javascriptがブロックスコープを使用しないことです。代わりに、すべての変数に含まれる関数の有効期間があります。したがって、すべてのonclick関数でキャプチャされたのは1つだけであり、すべてが最終値を認識します。」

私はその解決策を私のものに完全に翻訳することはできません。

どうもありがとう。

for (var i = 0; i < 4; i++) {
    var marker = new google.maps.Marker({
        position: flightPlanCoordinates[i],
        icon: Symbol,
        map: map
    });

    infowindow = new google.maps.InfoWindow();
    infowindow.setContent("hello");

    google.maps.event.addListener(marker, 'click', function () {
        infowindow.open(map, marker);
    });

}
4

1 に答える 1

1

マーカーを生成し、更新されたフィドルが機能するようにループから呼び出される独自の関数にリスナーを追加します。

function create_marker(i,flightPlanCoordinates,Symbol,map){
        var marker = new google.maps.Marker({
            position: flightPlanCoordinates[i],
            icon: Symbol,
            map: map
        });

        infowindow = new google.maps.InfoWindow();
        infowindow.setContent("hello" + i);

        google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,marker);
        });
    }
于 2013-01-29T15:58:31.043 に答える