dポイントプレゼントキャンペーン実施中!

googleマップAPIで、

var marker = new Array();
for(i=0; i<10; i++){
marker[i] = new GMarker(ZAHYOU[i]);
map.addOverlay(marker[i]);
GEvent.addListener(marker[i], 'click', function(){alert(i);});
}

というコードでは、10カ所にきちんとマーカーは付けられますが、
クリックイベントではすべて「10」が表示されます。なぜでしょうか?
マーカーとクリックイベントを対応させるにはどうすればいいのでしょうか?
よろしくお願いいたします。

A 回答 (1件)

iにはループの結果として10が入っていて、functionが呼ばれるときに、iの内容を見に行くからです。



以下、サンプルです。
GEvent.addListener(_MGmapMap, "click", function(overlay, point) {MGmapMarkerClick(overlay, point)});

function MGmapMarkerClick(overlay, point){
  if(overlay){
for(wp=0; wp<_MGmapMarkers.length; wp++ ) {
if(overlay==_MGmapMarkers[wp].overlay){
alert(wp);
        }
    }
}
}

listnerはfunctionにoverlayかpoint(地図面をクリックした場合)を返すので、
overlayがクリックされているか確認し、何番目のマーカーのoverlayと
同じか調べます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまく出来るかどうかわかりませんがやってみます。

お礼日時:2006/11/25 23:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!