OpenLayers动态修改GeoServer发布的地图样式

流程思路

1.改写GeoServer相应的SLD,使其支持动态修改样式;
2.修改前端请求WMS服务参数。

修改GeoServer的SLD

该部分在GeoServer官网上有说明,想了解更多请访问GeoServer官网:https://docs.geoserver.org/stable/en/user/styling/sld/extensions/substitution.html#sld-variable-substitution
GeoServer从2.0.2开始支持通过改变请求参数来动态改变WMS服务的SLD样式,如改变字体、大小、颜色等。

示例

本文以动态修改点状符号的类型、颜色和大小为例进行说明。

常规状态下SLD写法

常规状态下要渲染点的颜色和大小,其SLD如下:



  
    
      Default point
      A sample style that just prints out a 6px wide red square

      
        
          Red square
          
            
              
                square
                
                  #FF0000
                
              
              6
            
          
        

      
    
  

该样式下渲染结果如下图:
OpenLayers动态修改GeoServer发布的地图样式_第1张图片

需动态修改状态下的SLD

在需修改的关键点处已标明注释



  
    
      Default point
      A sample style that just prints out a 6px wide red square

      
        
          Red square
          
            
              
                
                 
                  
                    
                      name
                      
                      square
                   
                
                
                  
				  
                    #
					  
                      color
					  
                      FF0000
                   
                  
                
              
              
			     
                 
				    
                    size
					
                    6
                 
              
            
          
        

      
    
  

OpenLayers调用核心代码
var raster = new ol.layer.Tile({
      source: new ol.source.TileWMS({
		url: 'geoserver 服务地址',
			params: { 
				LAYERS: '图层名称', 
				VERSION: "1.1.1", 
				env:'color:00FF00;name:triangle;size:12'  //重点处:修改点状符号为:绿色、三角形、大小为12						
			}
		})
    });

其渲染结果如图所示:
OpenLayers动态修改GeoServer发布的地图样式_第2张图片

扫描下方二维码,关注微信公众号,精彩内容同步更新
OpenLayers动态修改GeoServer发布的地图样式_第3张图片

你可能感兴趣的:(OpenLayers,GeoServer)