0

さて、これはおそらく「値渡し」と参照渡しの問題であるため、おそらく恥ずかしい質問です。Google Maps JavaScript API v3を使用していて、独自のカスタムマップマーカーを設定しようとしています。各マーカーは、緯度、経度、およびその場所に関する「コメント」のある場所に対応し、配列内のオブジェクトとしてエンコードされます。ただし、ループ内でマーカーを設定することは問題ありませんが、場所に関するコメントを使用して別のdivを動的に更新するトリガーを作成するリスナーを作成しても、機能していないようです。

var myList = [ { lat: ..., lon: ..., title: ..., comment: ... }, { object repeats } ];

for (var i = 0; i < myList.length; i++) {
    // bunch of code setting up the marker
    var myMarker = new google.maps.Marker...

    google.maps.event.addListener(myMarker, 'click', function()
    {
        $('myDiv').empty().append(myList[i].comment);
    }

これで、addListenerの無名関数内のコードを除いてすべてが機能します。.commentは値ではなく参照によって渡されるようですが(これは理にかなっています)、ループがロケーション配列の最後のインデックスを通過するときに.append()は何も追加しないという効果があります。 .appendは、nullまたは未定義の値を空にしようとしていると呼ばれます。これを修正する方法についての洞察はありますか?

4

1 に答える 1

0

閉鎖の問題(または閉鎖の欠如)があります。

申し訳ありませんが、携帯電話を使用しているため、回答はリンクにすぎません: https ://developers.google.com/maps/documentation/javascript/events#EventClosures

ループ内でイベントをオブジェクトにバインドする方法については、Googleの例を参照してください。

ありがとう

于 2012-07-29T23:54:18.483 に答える