-
Notifications
You must be signed in to change notification settings - Fork 7
Composición
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.

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);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.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.4. Paneles
» Creación de panel desde cero sin controles
» Tutorial Panel de un único control
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
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