3

我想刪除事件偵聽器,點擊添加:gmap3刪除事件偵聽器

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

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

需要這樣的東西:

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

爲此,我需要引用特定的事件偵聽器對象。你知道如何將它添加到上面的代碼嗎? –

回答

2

我解決了不同的方式這個問題:

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

相反裝拆事件,在設置全局屬性對象。

3

沒有意識到gmap3是一個包裝庫。我刪除重複的評論。

通過瀏覽gmaps3文檔,我沒有看到任何具體的刪除監聽器的庫函數,但是您可以使用action: 'get'來獲取標記,然後清除監聽器。

這裏是一個例子,從文檔更改。我爲標記添加了一個名稱和標記屬性,並且在該腳本的末尾,我使用tag:'2'從標記中刪除了mouseover聽衆。由於某種原因,這個庫很善變,並且希望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/。當被淹沒時,中間的標記不會打開infowindow。