Openlayers-3更改外部WMS图层样式



是否可以改变外部wms层的样式??

我想使用这个图层:

https://firms.modaps.eosdis.nasa.gov/wms/?SERVICE=WMS& VERSION = 1.1.1&请求= GetMap&层= fires24&宽度= 400,身高= 250和BBOX = -26, 34岁,35岁,82年

在openlayers3上使用此代码

var fill = new ol.style.Fill({color: 'GREEN'});
var stroke = new ol.style.Stroke({color: 'GREEN'});
var styles = [new ol.style.Style({
    image: new ol.style.Circle({
        fill: fill,
        stroke: stroke,
        radius: 5
    })
})];

var fires = new ol.layer.Image({
    name: 'fires',
    source: new ol.source.ImageWMS({
        url: 'https://firms.modaps.eosdis.nasa.gov/wms/',
        params: {
            'LAYERS': 'fires24',
            'VERSION': '1.1.1'
        }
    }),
    style: styles
});

图层显示正确,但是没有我自己的样式。

是否可以这样做或替换为自定义图标?

您使用的WMS链接返回PNG文件,我认为OpenLayers不能"事后"样式。一旦你得到了它,它是不可变的——它不是"数据",而是一个透明的图像,覆盖在你的底层地图源的顶部。

有一些参数可以传递到wms调用中(就像你已经做的那样),并且标准看起来可以支持你将样式传递到wms服务器的调用中,以便在渲染图像时使用这些样式。

我已经从geoserver网站(一个GIS服务器)- http://docs.geoserver.org/stable/en/user/services/wms/reference.html可能的参数列表

查看该链接,看起来sldsld_body参数可能有效。SLD类似于使用XML的OL样式。这些样式表的详细信息在这里- http://docs.geoserver.org/stable/en/user/styling/index.html#styling

我已经尝试过这个jsfiddle: https://jsfiddle.net/y7fj57dj/,但它没有这样工作-它可能是我的SLD(我没有跟上它的速度)或NASA服务器不知道该怎么处理它/忽略它。

您可能需要联系NASA服务器管理员以确认您是否可以样式化WMS调用(support@earthdata.nasa.gov,通过转到https://firms.modaps.eosdis.nasa.gov/wms/?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities检索)。

最新更新