gmap3 удалить прослушиватель событий - PullRequest
3 голосов
/ 16 ноября 2011

Я хочу удалить прослушиватель событий для клика, добавленного:

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

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

Нужно что-то вроде:

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

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

Не понял, что gmap3 - это библиотека-обёртка.Я удалю дубликат комментария.

Просматривая документацию по gmaps3, я не увидел ничего конкретного для удаления слушателей с помощью функций библиотек, но вы можете взять маркер с помощью action: 'get' и затем очистить слушателя.пример, который изменен из документации.Я добавил имя и свойство тега к маркерам, и в конце этого сценария я удаляю слушателя mouseover из маркера с помощью tag:'2'.По какой-то причине эта библиотека непостоянна и хочет, чтобы свойства name и tag нашли маркер.

$('#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/. Маркер в середине не откроет информационное окно при наведении.

2 голосов
/ 17 ноября 2011

Я решил эту проблему по-другому:

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

Вместо отсоединения и присоединения событий, глобальные свойства в объекте настроек.

...