2017-10-19 10 views
0

私は問題に遭遇したようですが、インフォボックスの多くの実装を見ましたが、マーカーに別のコードを挿入する方法を理解しているようです。私は非常にjavascriptと未経験なので、私はそれを把握するように見えることはできません。グーグルマップapiv3、すべてのマーカーに同じクリック機能があります

私はマップに行くとき、それはすべてのマーカーを示すが、唯一の配列の最後であるコードの一部を選択し、

コード:

function updateMap() { 
    var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 4, 
    center: locationarray[0] 
    }); 
    var markernumber = new Array(); 
    for (var i = 0; i < 99; i++) { 
    markernumber[i] = new google.maps.Marker({ 
     position: locationarray[i], 
     map: map 
    }); 
    console.log('in loop:' + i); 
    google.maps.event.addListener(markernumber[i], 'click', function() { 
     console.log('in click:' + i); 
     openInNewTab(contentString[i]); 
    }); 
    } 
    document.getElementById('loader').style = "opacity: 0;"; 
} 

がcontentstring [i]が正常に動作していますしたがって、この関数の外には何もありません。

+1

'Googleマップapiv3は、すべてのマーカーに同じクリックfunction'できますいくつかの質問があれば教えてください - いいえ、あなたはそれをやっているし...' i'は、イベントハンドラは、すべてのために100になります内側マーカーをクリックします。 GoogleマップのJS API v3 - 単純な複数のマーカーの例: –

+1

の可能な複製(https://stackoverflow.com/questions/3059044/google-maps-js-api-v3-simple-multiple-marker-example) – geocodezip

答えて

-1

はそのような何かを試してみてください:

var markernumber = new Array(); 
    for (var i = 0; i < 4; i++) { 
     markernumber[i] = new google.maps.Marker({ 
      position: position[i], 
      map: map 
     }); 
     console.log('in loop:' + i); 
     (function (i, content, marker) { 

      google.maps.event.addListener(marker, 'click', function (e) { 
       console.log('in click:' + i); 
       //console.log(e); 
      }); 

     })(i, contentString[i], markernumber[i]); 
    } 

あなたが閉鎖のエラーを持っています。これは、リスナーが実行されるときに、iの値がすでに変更されて(forに)、99に渡されることを意味します。

説明の順序で説明します。 iに電話をかけるとき、またはそれまでに変えることができるものは、システムはこの名前の最後の値を見つけようとします。したがって、値が変更された場合、結果は変数の最後の「更新」になります。ここで

、あなたはforで、これまで「更新」iを持っi読むしようとするので、最後の値が99

あなたがリスナーにiの値を読みたい場合は、あなたがする必要があるだろうIIFEを作成し、実際の値i,contentStringおよびmarkernumberをパラメータに渡します。

閉鎖についての詳細はhereを参照してください(文書で少しは見つけなければなりませんが、その中に一節があります)。

あなたは

+0

すみません、私の先例の投稿にはエラーが含まれていますが、現在は正常です。 –

関連する問題