次のコードはjsonオブジェクトをループして、Googleマップにマーカーを配置します。どちらがうまくいくの?どのGoogleマップマーカーがクリックされたのかを特定する方法はありますか?
function displayMarkers(data){
for(var i = 0; i < data.Lat.length; i++){
var point = new GLatLng(data.Lat[i],data.Lng[i]);
marker = new GMarker(point);
map.addOverlay(marker);
// here's the problem
GEvent.addListener(marker, "click", function(){
alert(data.Name[i]);
});
}
}
問題は、すべてのマーカーが常に「i」の最後の値で応答することです。私は何らかの理由でデータオブジェクトから正しい情報を取得するためにクリックされたマーカーを識別する方法を見つけ出そうとしています。
マーカの配列を作成時にマーカーの位置に基づいてループさせることを考えていますが、それは私には本当に非効率的です。
いつものように、大変感謝しています。
ああ、あなたはまったく正しいです。問題は、マップではなくリスナーをマーカーに追加することです。リスナーをマップに追加すると、期待通りに機能し、リスナーを一度追加するだけで済みます。 –
すごく、ありがとう。 – gargantuan