openlayer4 + arcgisserver + wms +sld
需要注意的点是sld文件的编写
sld文件:
<?xml version=”1.0″ encoding=”UTF-8″?><sld:StyledLayerDescriptor xmlns=”http://www.opengis.net/sld” xmlns:sld=”http://www.opengis.net/sld” xmlns:gml=”http://www.opengis.net/gml” xmlns:ogc=”http://www.opengis.net/ogc” version=”1.0.0″>
<sld:NamedLayer> // 最好为NamedLayer
<sld:Name>trunk</sld:Name>
// 一定要加上<sld:Name>trunk</sld:Name>对应图层名
<sld:LayerFeatureConstraints>
<sld:FeatureTypeConstraint/>
</sld:LayerFeatureConstraints>
<sld:UserStyle>
<sld:Name>trunk</sld:Name> //style名
<sld:FeatureTypeStyle>
<sld:Name>group 0</sld:Name>
<sld:FeatureTypeName>Feature</sld:FeatureTypeName>
<sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
<sld:SemanticTypeIdentifier>simple</sld:SemanticTypeIdentifier>
<sld:Rule>
<sld:Name>default rule</sld:Name>
<sld:LineSymbolizer>
<sld:Stroke>
<sld:CssParameter name=”stroke”>#000080</sld:CssParameter>
<sld:CssParameter name=”stroke-width”>2.0</sld:CssParameter>
</sld:Stroke>
</sld:LineSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>
var layers = [ new ol.layer.Tile({ extent: extent, source: new ol.source.TileWMS({ url: urlwms, crossOrigin: 'anonymous', params: { 'LAYERS': ['trunk'], 'FORMAT': 'image/jpeg', 'STYLES': 'trunk', 'sld':'http://localhost:90/szgis/slds/test.xml'//将sld文件部署在url能访问的地方,如iis,tomcat等均可以,注意跨域问题 }, serverType: 'mapserver' }) }) ]; var map = new ol.Map({ controls: ol.control.defaults().extend([ new ol.control.ScaleLine({ units: 'metric' }) ]), layers: layers, target: 'map', view: new ol.View({ projection: projection, center: suzhou, extent: extent, zoom: 12 }) });
常见问题,配置sld无效果,图层无法显示,解决思路
1. sld文件编写是否有误,对照arcgis帮助文档中示例sld编写
2. 是否请求sld文件了,在F12调试中查看network是否请求了sld
转载自:https://blog.csdn.net/u010933982/article/details/74010430