0

私たちは Google マップを使用しており、マーカーでいっぱいの完全に人口の多いマップがあり、マップの外側の特定の結果をクリックすると、対応するマーカーに対して次のコードが実行される場合があります。

 map.setCenter(new google.maps.Marker({
    position : new google.maps.LatLng(latitude, longitude)
}).getPosition());
map.setZoom(10);
google.maps.event.trigger(currentMarker, 'click', {latLng: new google.maps.LatLng(latitude, longitude)});

このコードは、指定されたマーカーを中央に配置し、マーカーを拡大して、InfoBox を描画/開く「クリック」イベントをアクティブにすることを目的としています。

問題は、ほとんどの場合、このコードが実行されるときにクリック イベントがマーカーで複数回トリガーされ、InfoBox が再描画されますが、これが何度も発生することです (毎回設定された回数ではありません)。なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

0

に渡す場合は、緯度/経度を指定currentMarkerするgoogle.maps.event.trigger必要はありません。それはただであるはずですgoogle.maps.event.trigger(currentMarker, 'click')

同様に、別のオプションは.on()、外部リンクでjqueryのイベントを使用してクリックを検出infoWindow.open()し、マーカーでをトリガーすることです。以下は、これがどのように見えるかのスニペットです。

$('#openmarker').on('click', function(e){
    e.preventDefault();
    infowindow.open(map,currentMarker);
    map.setCenter(currentMarker.getPosition());
});
于 2012-09-19T01:03:40.660 に答える