3

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

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

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

需要类似的东西:

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

2 回答 2

3

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

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

这是一个从文档中更改的示例。我向标记添加了名称和标记属性,并在此脚本的末尾mouseover使用tag:'2'. 出于某种原因,这个库是善变的,并且希望nameandtag属性都能找到标记。

$('#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/。鼠标悬停时,中间的标记不会打开信息窗口。

于 2011-11-17T16:53:18.107 回答
2

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

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

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

于 2011-11-17T17:52:37.133 回答