Más

¿Cómo obtener el objeto del mapa en el evento?

¿Cómo obtener el objeto del mapa en el evento?


Agrego un oyente a un botón

L.DomEvent .addListener (selectList, 'click', L.DomEvent.stopPropagation) .addListener (selectList, 'click', L.DomEvent.preventDefault) .addListener (selectList, 'click', this._onMarkerChange);

Y luego quiero mover mapa por función panto.

_onMarkerChange: function () {this._handlingClick = true; for (var opt in this) {if (this [opt] .selected) {var lat = this [opt] .getAttribute ("data-lat"); var lon = this [opt] .getAttribute ("data-lon"); this.L.Map.panTo (nuevo L.LatLng (lat, lon)); pausa; }} this._handlingClick = false; },

Tiene un error --Uncaught ReferenceError: el mapa no está definido ¿Cómo debo hacerlo? pasar el objeto del mapa a este evento?


Si no especifica el cuarto argumento en L.DomEvent.addListener (el "contexto"), entoncesestadentro de su devolución de llamada se referirá al elemento DOM que desencadenó el evento, es decir, lo que se refiere aselectListen su código.

Luegopara (var optar en esto)recorrerá todoselectListPropiedades DOM, ythis.L.Map.panToesperará esoLse hace referencia como una propiedad deselectList. No creo que puedas usarlo como está tampoco.

Ahora si pasas tumapacomo cuarto argumento,estase referirá a él. Todavía puede acceder a su elemento DOM tomando un argumentoeventocon tu devolución de llamada y buscandoevent.currentTarget.

this._onMarkerChange = function (evento) {var dataset = event.currentTarget.dataset; var lat = parseFloat (dataset.lat); var lon = parseFloat (dataset.lon); this.panTo (nuevo L.LatLng (lat, lon)); } L.DomEvent .addListener (selectList, 'click', L.DomEvent.stopPropagation) .addListener (selectList, 'click', L.DomEvent.preventDefault) .addListener (selectList, 'click', this._onMarkerChange, map); // el mapa como cuarto argumento será el contexto (esto) en la devolución de llamada.

Demostración: http://jsfiddle.net/ve2huzxw/49/

No estoy seguro de a qué objeto desea hacer referencia mediante el uso deestadentro de su devolución de llamada_onMarkerChange). Como se dijo anteriormente,estahará referencia al elemento DOM (selectList) si no especifica el cuarto argumento enL.DomEvent.addListener, o cualquier objeto que pase como cuarto argumento.