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

You may also like...