2.5. Eventos - Desarrollos-IDEE/API-IDEE GitHub Wiki

Los eventos son disparadores que permiten al programador conocer cuándo ha ocurrido un suceso determinado, de manera que pueda actuar en consecuencia. Existen un conjunto de eventos disponibles para su uso, así como mecanismos para gestionarlos.

Evento Descripción
ADDED_TO_MAP Evento usado principalmente para saber cuando un elemento ha sido añadido al mapa.

Ejemplo

const capa = new IDEE.layer.WMS({
  url: 'http://www.ign.es/wms-inspire/unidades-administrativas?',
  name: 'AU.AdministrativeBoundary',
  legend: 'Límite administrativo',
});

capa.on(IDEE.evt.ADDED_TO_MAP, (facade) => {
  console.log(facade);
});

mapjs.addLayers([capa]);

En el caso que se necesite posteriormente hacer un setBbox() a la extensión de la capa, se puede utilizar esta concatenación de eventos:

capa.on(IDEE.evt.ADDED_TO_MAP, () => {
  mapajs.getMapImpl().on('rendercomplete', () =>  {
      mapajs.setBbox(capa.getMaxExtent())
  });
});

mapajs.addLayers(capa);
Evento Descripción
ADDED_TO_PANEL Evento usado principalmente para saber cuando un control ha sido añadido al panel.

Ejemplo

const toc = new IDEE.plugin.TOC({
  postition: 'TL',
  collapsible: true,
  collapsed: true,
});
mapjs.addPlugin(toc);
toc.control.on(IDEE.evt.ADDED_TO_PANEL, (control) => {
    IDEE.dialog.info(control.name)
});
Evento Descripción
ADDED_LAYER Evento usado principalmente para saber cuando al mapa se le añaden capas.

Ejemplo

const capa = new IDEE.layer.WMS({
  url: 'http://www.ign.es/wms-inspire/unidades-administrativas?',
  name: 'AU.AdministrativeBoundary',
  legend: 'Límite administrativo',
});
mapjs.on(IDEE.evt.ADDED_LAYER, (capas) => {
  IDEE.dialog.info(capas[0].name);
});
mapjs.addLayers([capa]);
Evento Descripción
ADDED_KML Evento usado principalmente para saber cuando se le añaden capas en formato KML al mapa.
ADDED_WMS Evento usado principalmente para saber cuando se le añaden capas en formato WMS al mapa.
ADDED_WFS Evento usado principalmente para saber cuando se le añaden capas en formato WFS al mapa.
ADDED_VECTOR_TILE Evento usado principalmente para saber cuando se le añaden capas en formato MVT al mapa.
ADDED_MBTILES Evento usado principalmente para saber cuando se le añaden capas en formato MBTiles al mapa.
ADDED_MBTILES_VECTOR Evento usado principalmente para saber cuando se le añaden capas en formato MBTilesVector al mapa.
ADDED_XYZ Evento usado principalmente para saber cuando se le añaden capas en formato XYZ al mapa.
ADDED_TMS Evento usado principalmente para saber cuando se le añaden capas en formato TMS al mapa.
ADDED_WMTS Evento usado principalmente para saber cuando se le añaden capas en formato WTMS al mapa.
ADDED_OGCAPIFEATURES Evento usado principalmente para saber cuando se le añaden capas en formato OGCAPIFeatures al mapa.
ADDED_QUICK_LAYERS Evento usado principalmente para saber cuando se le añaden capas en formato QUICK al mapa.

Ejemplo

const capa = new IDEE.layer.WMS({
  url: 'http://www.ign.es/wms-inspire/unidades-administrativas?',
  name: 'AU.AdministrativeBoundary',
  legend: 'Límite administrativo',
});
mapjs.on(IDEE.evt.ADDED_WMS, (capas) => {
  IDEE.dialog.info(capas[0].name);
});
mapjs.addLayers([capa]);
Evento Descripción
IDEE.evt.REMOVED_LAYER Evento usado principalmente para saber cuando se eliminan capas del mapa.

Ejemplo

const capa = new IDEE.layer.WMS({
  url: 'http://www.ign.es/wms-inspire/unidades-administrativas?',
  name: 'AU.AdministrativeBoundary',
  legend: 'Límite administrativo',
});
mapjs.on(IDEE.evt.REMOVED_LAYER, (capas) => {
  IDEE.dialog.info(capas[0].name);
});
mapjs.addLayers([capa]);
mapjs.removeLayers([capa]);
Evento Descripción
IDEE.evt.REMOVED_FROM_MAP Evento usado principalmente para saber cuando elemento se ha eliminado del mapa.

Ejemplo

const mvt = new IDEE.layer.MVT('MVT*https://ahocevar.com/geoserver/gwc/service/tms/1.0.0/ne:ne_10m_admin_0_countries@EPSG%3A900913@pbf/{z}/{x}/{-y}.pbf*vectortile');
mapjs.addLayers([mvt]);
mvt.on(IDEE.evt.REMOVED_FROM_MAP, (capas) => {
  IDEE.dialog.info(capas[0].name);
});
mapjs.removeLayers([mvt]);
Evento Descripción
IDEE.evt.ACTIVATED Evento usado principalmente para saber cuando un elemento se ha activado.
IDEE.evt.DEACTIVATED Evento usado principalmente para saber cuando un elemento se ha desactivado.

Ejemplo

const measurebar = new IDEE.plugin.MeasureBar({
  postition: 'TL',
  collapsible: true,
  collapsed: true,
});
mapjs.addPlugin(measurebar);
measurebar.controls_[0].on(IDEE.evt.ACTIVATED, () => {
  IDEE.dialog.info('Activado')  
})
Evento Descripción
IDEE.evt.SHOW Evento usado principalmente para saber cuando un elemento se ha mostrado.
IDEE.evt.HIDE Evento usado principalmente para saber cuando un elemento se ha ocultado.

Ejemplo

const measurebar = new IDEE.plugin.MeasureBar({
  postition: 'TL',
  collapsible: true,
  collapsed: true,
});
mapjs.addPlugin(measurebar);
measurebar.panel_.on(IDEE.evt.SHOW, () => {
    IDEE.dialog.info('Panel abierto');
});
measurebar.panel_.on(IDEE.evt.HIDE, () => {
    IDEE.dialog.info('Panel cerrado');
})
Evento Descripción
IDEE.evt.DESTROY Evento usado principalmente para saber cuando un elemento es destruido.

Ejemplo

const featureTabOpts = {
  'icon': 'g-cartografia-pin',
  'title': 'Título',
  'content': 'Información'
};
popup = new IDEE.Popup();
popup.addTab(featureTabOpts);
mapjs.addPopup(popup, [240829,4143088]);
popup.on(IDEE.evt.DESTROY, () => {
  IDEE.dialog.info('Popup eliminado');  
})
popup.destroy();
Evento Descripción
IDEE.evt.SELECT_FEATURES Evento usado principalmente para saber cuando se ha seleccionado un objeto geográfico.
IDEE.evt.UNSELECT_FEATURES Evento usado principalmente para saber cuando se ha perdido la selección de un objeto geográfico.
IDEE.evt.HOVER_FEATURES Evento usado principalmente para saber cuando el cursor pasa por encima de un objeto geográfico.
IDEE.evt.LEAVE_FEATURES Evento usado principalmente para saber cuando el cursor abandona un objeto geográfico.

Ejemplo

const capaKML = new IDEE.layer.KML("KML*Arboleda*http://mapea4-sigc.juntadeandalucia.es/files/kml/*arbda_sing_se.kml*true");
capaKML.on(IDEE.evt.SELECT_FEATURES, (features) => { 
  console.log("Se han seleccionado los objetos geográficos: ", features); 
});
Evento Descripción
IDEE.evt.LOAD Evento usado principalmente para saber cuando se ha cargado un elemento.

Ejemplo

capaWFS.on(IDEE.evt.LOAD, (features) => {
  console.log("se ha cargado la capa WFS en el mapa con los objetos geográficos:", features);
});
Evento Descripción
IDEE.evt.COMPLETED Evento usado principalmente para saber cuando se ha completado una acción.

Ejemplo

mapjs.on(IDEE.evt.COMPLETED, () => {
    IDEE.dialog.info('Mapa Cargado');
});
Evento Descripción
IDEE.evt.CHANGE Evento usado principalmente para saber cuando un elemento ha cambiado.

Ejemplo

const estilo = new IDEE.style.Point({
  radius: 5,
  fill: {  
    color: 'red',
  },
});
estilo.on(IDEE.evt.CHANGE, () => {
  IDEE.dialog.info('Las propiedades del estilo han cambiado');
});
estilo.set('fill.color', 'blue')
Evento Descripción
IDEE.evt.CHANGE_PROJ Evento usado principalmente para saber cuando se ha cambiado la proyección del mapa.

Ejemplo

mapjs.on(IDEE.evt.CHANGE_PROJ, () => {
  IDEE.dialog.info('La proyección ha cambiado');
});
mapjs.setProjection('EPSG:4326*d');
Evento Descripción
IDEE.evt.CHANGE_STYLE Evento usado principalmente para saber cuando se ha cambiado el estilo a una capa u objeto geográfico..

Ejemplo

capa.on(IDEE.evt.CHANGE_STYLE, () => {
  IDEE.dialog.info('Nuevo estilo aplicado');
});
capa.setStyle(nuevoEstilo);
Evento Descripción
IDEE.evt.CHANGE_ZOOM Evento usado principalmente para saber cuando se ha cambiado el zoom al mapa.

Ejemplo

mapjs.on(IDEE.evt.CHANGE_ZOOM, (m) => {
  IDEE.dialog.info(`Zoom actual: ${m.getZoom()}`);
});
mapjs.setZoom(9);
Evento Descripción
IDEE.evt.CLICK Evento usado principalmente para saber cuando se hace click en el mapa.

Ejemplo

mapjs.on(IDEE.evt.CLICK, (m) => {
  IDEE.dialog.info('Se ha pulsado en el mapa');
})
Evento Descripción
IDEE.evt.MOVE Evento usado principalmente para saber cuando se mueve el mapa.

Ejemplo

mapjs.on(IDEE.evt.MOVE, (m) => {
  console.log('Mapa en movimiento');
})
Evento Descripción
IDEE.evt.MOVE_MOUSE Evento usado principalmente para saber cuando se mueve el ratón.

Ejemplo

mapjs.on(IDEE.evt.MOVE_MOUSE, (m) => {
  console.log('Ratón en movimiento');
});
Evento Descripción
IDEE.evt.POPUP_ADDED Evento usado principalmente para saber cuando se añade un popup. Lo disparan tanto el mapa como el propio popup.
IDEE.evt.POPUP_REMOVED Evento usado principalmente para saber cuando se elimina un popup. Lo disparan tanto el mapa como el propio popup.
IDEE.evt.POPUP_ADDED_TAB Evento usado principalmente para saber cuando se añade una pestaña a un popup. Lo dispara el popup.
IDEE.evt.POPUP_REMOVED_TAB Evento usado principalmente para saber cuando se elimina una pestaña de un popup. Lo dispara el popup.

Ejemplo

mapjs.on(IDEE.evt.POPUP_ADDED, () => {
  console.log('Se ha añadido un popup.');
});
const popup = new IDEE.Popup();
popup.on(IDEE.evt.POPUP_ADDED, () => {
  console.log('Se ha añadido un popup.');
});

FeatureHandler

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

// Array de objetos geográficos a seleccionar, capa que los contiene y evt opcional
mapajs.getFeatureHandler().selectFeatures([feature],layer,{});
// Array de objetos geográficos 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 objetos geográficos
mapajs.getFeatureHandler().removeLayer(layer);

Esto simplemente marca los objetos geográficos 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.

Ejemplo

// Creamos capa GeoJSON
const geojson = new IDEE.layer.GeoJSON({
  name: "Provincias GeoJSON",
  url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tematicos:Provincias&maxFeatures=50&outputFormat=application/json"
});

let selectedFeature;

// Añadimos evento SELECT_FEATURE a la capa 
geojson.on(IDEE.evt.SELECT_FEATURES, function(features,evt) {
  console.log('click en el feature' + features[0].getId()); // mostrará el ID del objeto espacial
  console.log('Coordenadas: ' + evt.coord); // y las coordenadas
})

// Añadimos la capa al mapa
mapajs.addLayers([geojson]);

// creamos una función que será llamada desde un botón HTML en la que se hará uso de 
// getFeatureHandler().selectFeatures para seleccionar un objeto espacial
// como evento le mandará unas coordenadas
window.seleccionar = (evt) => {
  selectedFeature = geojson.getFeatures()[0];
  mapajs.getFeatureHandler().selectFeatures([selectedFeature], geojson, {coord: [-253056, 4461347]});
};


// Botón HTML 
<button onclick="seleccionar();" class="floatbtn">
Seleccionar
</button>


⚠️ **GitHub.com Fallback** ⚠️