2015-08-27 29 views
8

In Openlayers 3 come rimuovere un ascoltatore evento associato in questo modo:OpenLayers 3: Rimuovere listener di eventi

var a = map.on("pointerdrag",function (e) { 
      // event handler 
}); 

var b = map.on("pointerdrag",function (e) { 
      // event handler 
}); 

Come faccio a rimuovere solo listner a e mantenere b attivo?

risposta

11

Ah è piuttosto semplice! È nel API Docs: unByKey, ma un nome molto contro-intuitivo per una funzione off.

Quindi, per rimuovere il listener di eventi a:

map.unByKey(a); 

Rimuoverà a ascoltatore ma mantenere il b su.

Nota: questo funzionerà su qualsiasi oggetto in Open Layers 3 che emette un evento. come Strati, Interazioni ecc.

+1

Nota è anche possibile utilizzare '.un', se si utilizza una funzione con nome. 'funzione onPointerDragOne() {/ * fare stuf * /}' ' funzione onPointerDragTwo() {/ * fare stuf * /}' ' map.on ("pointerdrag", onPointerDragOne);' ' map.on ("pointerdrag", onPointerDragTwo); ' ' map.un ("pointerdrag", onPointerDragOne); ' ' // Solo onPointerDragTwo verrà eseguito' –

1

Mi stavo chiedendo la stessa cosa, sembra che off sia il metodo appropriato per rimuovere un listener di eventi. È anche possibile chiamare questo direttamente nel callback dell'evento:

map.on("pointerdrag", function (e) { 
    map.unByKey(e); 
}); 

Questo dovrebbe rimuovere solo l'evento specifico.

+0

Perché farò una cosa del genere? –