Estoy usando el detector de eventos mousemove en mapbox para poder arrastrar un punto alrededor del mapa. Sin embargo, cuando llamo a .off() en él, no se desactiva. Estoy haciendo esto en Angular con Typescript.
Llamada original:
this.map.mapInstance.on('mousemove', this.onPointMove.bind(this)); this.map.mapInstance.once('mouseup', this.onPointUp.bind(this));enMovimientoPunto(e):
const coords = e.lngLat; this.map.mapInstance.getCanvasContainer().style.cursor = 'grabbing'; console.log(coords);enPuntoArriba(e):
this.map.mapInstance.getCanvasContainer().style.cursor = ''; this.map.mapInstance.off('mousemove', this.onPointMove.bind(this));Después de que termino de arrastrar, el archivo console.log aún se genera cuando muevo el mouse.
Su problema es que necesita pasar exactamente la misma función a off , no una nueva función que haga lo mismo.
const mousemove = this.onPointMove.bind(this); this.map.mapInstance.on('mousemove', mousemove); // ... this.map.mapInstance.off('mousemove', mousemove);