Google map infowindow会两次触发点击事件

时间:2013-12-29 06:49:35

标签: jquery google-maps-api-3 infowindow

我正在使用谷歌地图API v.3。我正在infowindow上添加一个图像,并希望处理该图像的点击事件。但是点击事件会触发两次。这是我的代码 -

var mapOptions = {center: new google.maps.LatLng(lat,lng), zoom: 15, mapTypeId:   google.maps.MapTypeId.ROADMAP};
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var myLatlng = new google.maps.LatLng(lat,lng);
var data = {}; data.title = 'title'; data.lat = lat;data.lng = lng;
data.description = '<img class="test-image" src="src"';
var marker = new google.maps.Marker({position: myLatlng, map: map,title: 'title'});

(function (marker, data) {
    google.maps.event.addListener(marker, "click", function (e) {
                                infoWindow.setContent(data.description);
                                infoWindow.open(map, marker);
                            });


    google.maps.event.addDomListener(infoWindow, 'domready', function () {
                                $('.test-image').click(function () {
                                    alert("Hello World");
                                });
                            });                              
 })(marker, data);

我怎样摆脱这个问题?

在期待中感谢你。

2 个答案:

答案 0 :(得分:1)

我无法告诉您这种行为的原因,但是当您使用addListenerOnce并在domready中应用click - 侦听器时,它可能会被修复 - 标记的回调:

(function (marker, data) {
    google.maps.event.addListener(marker, "click", function (e) {
      google.maps.event.addListenerOnce(infoWindow, 'domready', function () {
         $('.test-image').click(function () {
              alert("Hello World");
        });
      });       
      infoWindow.setContent(data.description);
      infoWindow.open(map,marker);
    });
})(marker, data);

答案 1 :(得分:0)

google.maps.event.addListener(marker, "click", function() {
    infoWindow.setContent(data.description);
    infoWindow.open(map, marker);

    $('.test-image').click(function() {
        alert("Hello World");
    });
});

这适合我。