Skip to content

Composición

isdefeG edited this page Jul 1, 2026 · 3 revisions

Es posible que una misma capa acepte más de un tipo de simbología a la vez. En esos casos hablamos de composiciones simbológicas, y algunos ejemplos de dichas composiciones podrían ser:

  • Una capa puntual con simbología básica definida para ella, que además está clusterizada.
  • Una capa categorizada por un atributo, con simbología proporcional en base a otro.
  • Una capa con simbología estadística de tartas, a la que se le aplica simbología proporcional para darle a cada tarta un tamaño diferente en base a un atributo del elemento.

composite

Sin embargo, no todas las combinaciones de estilos son posibles. Así por ejemplo, no tendría sentido aplicar en una misma capa una simbología por Coropleta y otra por Categorización, ya que ambas se pisarían.

Estas composiciones simbológicas están modeladas bajo la clase IDEE.style.Composite, de la que heredan todas las simbologías sobre las que pueden añadirse simbologías adicionales:

  • IDEE.style.Proportional
  • IDEE.style.Choropleth
  • IDEE.style.Category
  • IDEE.style.Cluster

Dicha clase posee métodos específicos, heredados por tanto para los estilos anteriores, para la gestión de estilos adicionales:

Método Descripción
add(IDEE.Style | Array<IDEE.Style>): IDEE.style.Composite Agrega uno o varios estilos adicionales al estilo
remove(IDEE.Style | Array<IDEE.Style>): IDEE.style.Composite Elimina uno o varios estilos que estén agregados
getStyles(): Array<IDEE.Style> Devuelve los estilos agregados a un estilo de tipo Composite

Veamos a continuación la implementación de uno de los ejemplos planteados inicialmente:

let map = IDEE.map({
  container: "map"
});

// Capa puntual de Campamentos
var campamentos = new IDEE.layer.WFS({
url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/sepim/ows?",
name: "campamentos",
legend: "Campamentos",
geometry: 'MPOINT'
});

map.addLayers(campamentos);

// Estilo genérico: puntos amarillos con borde rojo
let estilo_base = new IDEE.style.Generic({
  point: {
    radius: 5,
    fill: {
      color: 'yellow',
      opacity: 0.5
    },
    stroke: {
      color: '#FF0000'
    }
  }
});

// Estilo cluster por defecto
let estilo_cluster = new IDEE.style.Cluster();

// Cluster permite Composite, así que se le puede agregar el estilo base
let composite = estilo_cluster.add(estilo_base);

// Y asignamos a la capa la composición creada
campamentos.setStyle(composite);

Otro ejemplo, en el caso de querer usar un estilo categórico con otro base que se aplique a los valores no indicados en la definición de las categorías a representar:

let map = IDEE.map({
  container: "map"
});

// Capa puntual de Campamentos
var campamentos = new IDEE.layer.WFS({
  url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?",
  namespace: "tematicos",
  name: "ind_mun_simp",
  legend: "Municipios SIM",
  geometry: 'MPOLYGON'
});

map.addLayers(campamentos);

// Estilo basico: puntos amarillos con borde rojo
let estilo_base = new IDEE.style.Generic({
  polygon: {
  fill: {
    color: '#000000',
    opacity: 0.0
  },
  stroke: {
    color: '#000000',
    opacity: 0.0
  }
}});

let verde = new IDEE.style.Generic({polygon: {fill: {color: 'green'}}});
let amarillo = new IDEE.style.Generic({polygon: {fill: {color: 'pink'}}});
let rojo = new IDEE.style.Generic({polygon: {fill: {color: 'red'}}});
let azul = new IDEE.style.Generic({polygon: {fill: {color: 'grey'}}});
let naranja = new IDEE.style.Generic({polygon: {fill: {color: 'orange'}}});
let marron = new IDEE.style.Generic({polygon: {fill: {color: 'brown'}}});
let magenta = new IDEE.style.Generic({polygon: {fill: {color: '#e814d9'}}});
let morado = new IDEE.style.Generic({polygon: {fill: {color: '#b213dd'}}});

// Creamos la simbología. El atributo "provincia" contiene el nombre
// de la provincia a la que pertenece cada feature
let categoryStyle = new IDEE.style.Category("provincia", {
  "Almería": marron,
  "Cádiz": amarillo,
  "Córdoba": magenta,
  "Granada": verde,
  "Jaén": naranja,
  // "Málaga": azul,  -> No queremos representar Málaga en el categórico
  // "Sevilla": rojo, -> No queremos representar Sevilla en el categórico
});

// Se asocia primero el estilo transparente al categórico, lo que hará de estilo por defecto para los no seleccionados
categoryStyle.add(estilo_base);

campamentos.setStyle(categoryStyle);

Otra manera de aplicar varios estilos que permita la composición es añadir en el orden que se quieran, los estilos a la capa directamente, por ejemplo:

let map = IDEE.map({
  container: "map"
});

// Capa puntual de Campamentos
var campamentos = new IDEE.layer.WFS({
  url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?",
  namespace: "tematicos",
  name: "ind_mun_simp",
  legend: "Municipios SIM",
  geometry: 'MPOLYGON'
});

map.addLayers(campamentos);

// Estilo basico: puntos amarillos con borde rojo
let estilo_base = new IDEE.style.Generic({
  polygon: {
  fill: {
    color: '#000000',
    opacity: 0.0
  },
  stroke: {
    color: '#000000',
    opacity: 0.0
  }
}});

let verde = new IDEE.style.Generic({polygon: {fill: {color: 'green'}}});
let amarillo = new IDEE.style.Generic({polygon: {fill: {color: 'pink'}}});
let rojo = new IDEE.style.Generic({polygon: {fill: {color: 'red'}}});
let azul = new IDEE.style.Generic({polygon: {fill: {color: 'grey'}}});
let naranja = new IDEE.style.Generic({polygon: {fill: {color: 'orange'}}});
let marron = new IDEE.style.Generic({polygon: {fill: {color: 'brown'}}});
let magenta = new IDEE.style.Generic({polygon: {fill: {color: '#e814d9'}}});
let morado = new IDEE.style.Generic({polygon: {fill: {color: '#b213dd'}}});

// Creamos la simbología. El atributo "provincia" contiene el nombre
// de la provincia a la que pertenece cada feature
let categoryStyle = new IDEE.style.Category("provincia", {
  "Almería": marron,
  "Cádiz": amarillo,
  "Córdoba": magenta,
  "Granada": verde,
  "Jaén": naranja,
  // "Málaga": azul,  -> No queremos representar Málaga en el categórico
  // "Sevilla": rojo, -> No queremos representar Sevilla en el categórico
});

// Se asocia primero el estilo transparente a la capa
campamentos.setStyle(estilo_base);


// Se asocia posteriormente el categórico
campamentos.setStyle(categoryStyle);

vendorOptions

No permite vendorOptions.

Ejemplos:

1.INICIO
   1.1. Componentes de la API-IDEE
   1.2. Documentación y Puntos de acceso
   1.3. Primeros pasos
   1.4. Diagrama API IDEE

2. MAPA
2.1. Capas

 ■ 2.1.1. Fuentes
   • 2.1.1.1. Capas vectoriales
     + Vector
     + WFS
     + GeoJSON
     + KML
     + MVT
     + OGCAPIFeatures
     + MBTilesVector
     + GenericVector
     + MapLibre
   • 2.1.1.2. Capas ráster
     + WMS
     + WMC
     + WMTS
     + TMS
     + XYZ
     + OSM
     + MBTiles
     + GenericRaster
     + GeoTIFF
     + GeoPackageTile
   • 2.1.1.3. Capas 3D
     + Terreno
     + 3DTiles
       + info 3DTiles
   • 2.1.1.4. Capas rápidas
   • 2.1.1.5. Grupo de capas
   • 2.1.1.6. Secciones
   • 2.1.1.7. GeoPackage
   • 2.1.1.8. Capas externas

 ■ 2.1.2. Simbolización
   • 2.1.2.1. Genérica
     + Puntos
     + Líneas
     + Polígonos
   • 2.1.2.2. Básica
     + Puntos
     + Líneas
     + Polígonos
   • 2.1.2.3. Avanzada
     + Coropletas
     + Proporcional
     + Categorías
     + Estadísticos
     + Mapas de Calor
     + Cluster
     + Línea de flujo
     + Composición

 ■ 2.1.3. Filtros

2.3.-Plugins

  > Creación de plugin en cliente

  » Tutorial de creación de un plugin

2.4. Paneles

  » Creación de panel desde cero sin controles

  » Tutorial Panel de un único control

  » Tutorial Panel de un único control con más de un botón

  » Tutorial Panel con más de un control

2.5. Eventos

  » Gestión de eventos
  » Gestión de eventos en controles personalizados

    2.6. Internacionalización

    2.7. Configuración

    2.8. Acceso librerías base

3. UTILIDADES

4. PROXY

5. API REST
 5.1. Parametrización API-REST
 5.2. Base de Datos API-REST
 5.3. API REST Actions
 5.4. Servicio de correos electrónicos
 5.5. Capas rápidas
 5.6. Parametrización API-REST plugins externos

6. PARAMETRIZACIÓN VISUALIZADORES

7. SOLUCIÓN DE PROBLEMAS

8. PROCESO DE VERSIONADO

9. GUÍA DE DESARROLLO
  > Guía para colaborar en el repositorio
  > Guía para el desarrollo de API-IDEE
  > Guía de test de API-IDEE
  » Tutorial desarrollo del núcleo de API-IDEE - (Cliente)
  > Guía de desarrollo de componentes
  » Tutorial desarrollo del núcleo de API-IDEE - (Servidor)
  > Guía de desarrollo de plugins
  » Tutorial desarrollo de plugins ya creados
  » Tutorial desarrollo de nuevos plugins
  > Guía de desarrollo de visualizadores con React

  > Compilación proyecto API-IDEE

Clone this wiki locally