gmap3删除事件监听器

时间:2011-11-16 11:05:33

标签: javascript jquery google-maps google-maps-api-3 jquery-gmap3

我想删除点击添加的事件监听器:

var events = {
    click: function () {
        // crazy stuff here :- )
    }
};

$(where).gmap3(
    {
        events: events
    }
);

需要类似:

$(where).gmap3().removeEventListener('click');

2 个答案:

答案 0 :(得分:3)

没有意识到gmap3是一个包装库。我删除重复的评论。

浏览gmaps3文档时,我没有看到任何特定的删除具有库函数的侦听器,但您可以使用action: 'get'获取标记,然后清除侦听器。

这是一个从文档中更改的示例。我在标记中添加了名称和标记属性,在此脚本的末尾,我使用mouseover从标记中删除了tag:'2'侦听器。出于某种原因,这个库变幻无常,并希望nametag属性都能找到标记。

$('#test').gmap3({
    action: 'init',
    options: {
        center: [46.578498, 2.457275],
        zoom: 5
    }
}, {
    action: 'addMarkers',
    markers: [
        {
        name : 'marker', 
        tag: '1',
        lat: 48.8620722,
        lng: 2.352047,
        data: 'Paris !'},
        {
        name : 'marker',
        tag: '2',
        lat: 46.59433,
        lng: 0.342236,
        data: 'Poitiers : great city !'},
        {
        name : 'marker',
        tag: '3',
        lat: 42.704931,
        lng: 2.894697,
        data: 'Perpignan !  GO USAP !'}
    ],
    marker: {
        options: {
            draggable: false
        },
        events: {
            mouseover: function(marker, event, data) {
                var map = $(this).gmap3('get'),
                    infowindow = $(this).gmap3({
                        action: 'get',
                        name: 'infowindow'
                    });
                if (infowindow) {
                    infowindow.open(map, marker);
                    infowindow.setContent(data);
                } else {
                    $(this).gmap3({
                        action: 'addinfowindow',
                        anchor: marker,
                        options: {
                            content: data
                        }
                    });
                }
            },
            mouseout: function() {
                var infowindow = $(this).gmap3({
                    action: 'get',
                    name: 'infowindow'
                });
                if (infowindow) {
                    infowindow.close();
                }
            }
        }
    }
});


//get the marker by name and tag
var mark = $('#test').gmap3({
    action: 'get',
    name:'marker',
    tag: '2'
});

//remove the event listener
google.maps.event.clearListeners(mark, 'mouseover');

以下是此脚本的一个示例:http://jsfiddle.net/5GcP7/。当鼠标悬停时,中间的标记不会打开信息窗。

答案 1 :(得分:2)

我以不同的方式解决了这个问题:

 var events = {
     click: function () {
         if (P.settings.mapPinActive === false) {
             return;
         }
         // crazy stuff here :- )
     }
 };

而不是在设置对象中分离和附加事件,全局属性。