Estoy utilizando OpenLayers 3 y GeoServer para crear una aplicación web espacial en la que quiero permitir a los usuarios elegir una rampa de color (utilizando Colorbrewer) y un número de saltos para estilizar un atributo en su capa de análisis (es decir, para estilizar un choropleth). He conseguido que esto funcione generando dinámicamente una cadena XML SLD y pasándola como valor al parámetro SLD_BODY en la fuente TileWMS, pero sólo con 3 saltos/clases. Cuando selecciono 4 o más clases no se devuelve nada y creo que el problema es que el SLD se vuelve demasiado largo para la petición GET de OpenLayers TileWMS. He leído varios posts que explican que se puede hacer una petición POST en OpenLayers 2 para evitar este problema, pero no he encontrado nada sobre cómo hacer esto usando OpenLayers 3. Sólo una respuesta en este puesto insinúa una solución, pero no es suficiente para que yo encuentre una respuesta. Así es como estoy definiendo la capa y añadiendo el SLD. ¿Alguien sabe cómo evitar el límite de caracteres con la solicitud GET de OpenLayers 3 utilizando POST en su lugar?
window.layer = new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://' + window.location.hostname + ':8080/geoserver/wms',
params: {LAYERS: geoserverLayer, STYLES: undefined, SLD_BODY: sld, CQL_FILER: geoserverFilter, TILED: true},
serverType: 'geoserver'
})
});