Skip to content

Eventos

fbma edited this page Aug 16, 2023 · 31 revisions

Los eventos son disparadores que permiten al programador conocer cuándo ha ocurrido un suceso determinado, de manera que pueda actuar en consecuencia. Estos son los eventos que maneja Mapea:

Asociados al mapa y a las capas

Evento Descripción Evento Descripción
M.evt.ADDED_LAYER Se ha añadido una capa M.evt.ADDED_WFS Se ha añadido una capa WFS
M.evt.ADDED_WMC Se ha añadido un wmc M.evt.ADDED_WMTS Se ha añadido una capa WMTS
M.evt.ADDED_KML Se ha añadido una capa KML M.evt.LOAD * evento de capa vectorial: Se han cargado los features de la capa.
* Sobre WMC: Se ha activado el WMC.
M.evt.ADDED_WMS Se ha añadido una capa WMS M.evt.COMPLETED Se ha completado la definición interna del mapa. Requiere capa base.
M.evt.CHANGE_PROJ Ha cambiado la proyección del mapa M.evt.CHANGE_WMC Ha cambiado el wmc activo.
M.evt.CLICK Se ha hecho click en el mapa (captura coordenadas) M.evt.CHANGE_STYLE * evento de capa vectorial: Ha cambiado el estilo de la capa.
* evento de feature: Ha cambiado el estilo del feature.
M.evt.REMOVED_LAYER (v5.1.0+) evento de mapa: se ha eliminado una capa del mapa. M.evt.REMOVED_FROM_MAP (v5.2.0+) evento de capa: se ha eliminado una capa del mapa
M.evt.CHANGE_ZOOM (v6.1.0+) evento de mapa: Se ha producido un cambio en el nivel de zoom M.evt.POPUP_ADDED (6.2.0+) evento de mapa: Se ha añadido un Popup al mapa
M.evt.POPUP_REMOVED (v6.2.0+) evento de mapa: Se ha eliminado un Popup de mapa M.evt.LAYER_VISIBILITY_CHANGE (6.4.0+) evento de capa: Ha cambiado la visibilidad de la capa. El evento contiene booleano indicando nueva visibilidad

💡 Para asociar un evento, se usa el método .on(evento,accion), y para desasociarlo, se usa .un(evento,accion)

// Declaramos directamente las acciones que realizar en el evento
mapajs.on(M.evt.ADDED_LAYER, function() {
  console.log('Evento M.evt.ADDED_LAYER: se ha añadido una capa al mapa');
});

// O mediante una funcion definida
function mostrarMensajeEvento() {
    M.dialog.info('el evento ha ocurrido');
}
mapajs.on(M.evt.ADDED_WFS, mostrarMensajeEvento);

// El evento de carga de WFS es util cuando queremos procesar los features
wfslayer.on(M.evt.LOAD, function(features) {
  console.log("Evento M.evt.LOAD: se ha cargado la capa WFS en el mapa con los elementos:", features);
});

Ver ejemplo en JSFiddle

Asociados a los paneles

Evento Descripción
M.evt.ADDED_TO_MAP El panel se ha añadido al mapa
M.evt.SHOW El panel se ha abierto
M.evt.HIDE El panel se ha ocultado

Asociados a los controles

Evento Descripción
M.evt.ADDED_TO_PANEL El control se ha añadido al panel
M.evt.ACTIVATED El control se ha activado
M.evt.DEACTIVATED El control se ha desactivado

Ejemplo

newControl.on(M.evt.ACTIVATED,function(){console.log('Control Activado');});

Ver ejemplo en JSFiddle

Asociados a los paneles

Evento Descripción
M.evt.ADDED_TO_MAP El plugin se ha añadido al mapa

Asociados a la interacción con features
Estos eventos devuelven siempre un Array con los features objeto del mismo, ya que es posible, según la ubicación de los features y el nivel de zoom, que la selección o el desplazamiento se realice en múltiples features simultáneamente.

Evento Descripción
M.evt.SELECT_FEATURES Se ha seleccionado un feature
M.evt.UNSELECT_FEATURES Un feature ha perdido la selección
M.evt.HOVER_FEATURES El cursor pasa por encima de un feature
M.evt.LEAVE_FEATURES El cursor abandona un feature

Ejemplo

var capaKML = new M.layer.KML(
"KML*Arboleda*http://mapea4-sigc.juntadeandalucia.es/files/kml/*arbda_sing_se.kml*true");
// Los features sobre los que se pinche se devuelven en un Array
capaKML.on(M.evt.SELECT_FEATURES, function(features) { 
alert("Se han seleccionado los features: ", features); });

Asociados a un Popup

Evento Descripción Evento Descripción
POPUP_ADDED_TAB (V6.2.0+) Se ha añadido una pestaña al popup POPUP_REMOVED_TAB (V6.2.0+) Se ha eliminado una pestaña del popup

Otros

Evento Descripción
M.evt.DESTROY Se ha lanzado el método Destroy del elemento

FeatureHandler

El objeto mapa posee un gestor de eventos llamado FeatureHandler desde el que se puede activar y desactivar la selección de features específicos, así como añadir o eliminar una capa vectorial de la gestión de eventos vectoriales:

// Array de features a seleccionar, capa que los contiene y evt opcional
mapajs.getFeatureHandler().selectFeatures([feature],layer,{});
// Array de features a deseleccionar, capa que los contiene y evt opcional
mapajs.getFeatureHandler().unselectFeatures([feature],layer,{});
// Eliminar una capa del gestor implica no poder usar los metodos
// anteriores sobre sus features
mapajs.getFeatureHandler().removeLayer(layer);

Esto simplemente marca los features como seleccionados/deseleccionados, por lo que cualquier comportamiento adicional asociado a la selección que se desee, tales como cambio de estilo, apertura de bocadillo, etc. deben ser gestionados adicionalmente. Ver ejemplo en JSFiddle