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.');
});
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>