如何显示具有多种样式的图层图

Posted

技术标签:

【中文标题】如何显示具有多种样式的图层图【英文标题】:How to show one layer map with many style 【发布时间】:2014-12-21 16:27:32 【问题描述】:

我想根据图层中的某些属性显示具有多种样式的图层图,但不知道如何。如果我在 geoserver 中使用 SLD,我只显示一种样式,我尝试用 javascript(基于 Openlayer 库)编写一些东西,如下所示,但它不起作用,代码对图层图没有任何影响。任何建议将不胜感激。

//创建一个样式对象 var style = new OpenLayers.Style(); //用于所有多边形的规则 var rule_p1 = new OpenLayers.Rule( 过滤器:新的 OpenLayers.Filter.Comparison( 类型:OpenLayers.Filter.Comparison.EQUAL_TO, 属性:“vi_tri”, 值:“1”, ), 符号: 填充颜​​色:“#00FF00”, 填充不透明度:0.6, strokeColor: "#FF0000", 行程宽度:2, strokeDashstyle: "实心", ); var rule_p2 = new OpenLayers.Rule( 过滤器:新的 OpenLayers.Filter.Comparison( 类型:OpenLayers.Filter.Comparison.EQUAL_TO, 属性:“vi_tri”, 值:“2”, ), 符号: 填充颜​​色:“#40FF00”, 填充不透明度:0.6, strokeColor: "#FF0000", 行程宽度:2, strokeDashstyle: "实心", ); var rule_p3 = new OpenLayers.Rule( 过滤器:新的 OpenLayers.Filter.Comparison( 类型:OpenLayers.Filter.Comparison.EQUAL_TO, 属性:“vi_tri”, 值:“3”, ), 符号: 填充颜​​色:“#80FF00”, 填充不透明度:0.6, strokeColor: "#FF0000", 行程宽度:2, strokeDashstyle: "实心", ); var rule_p4 = new OpenLayers.Rule( 过滤器:新的 OpenLayers.Filter.Comparison( 类型:OpenLayers.Filter.Comparison.EQUAL_TO, 属性:“vi_tri”, 值:“4”, ), 符号: 填充颜​​色:“#FFFF00”, 填充不透明度:0.6, strokeColor: "#FF0000", 行程宽度:2, strokeDashstyle: "实心", ); style.addRules([rule_p1, rule_p2, rule_p3, rule_p4]); mybinh = 新的 OpenLayers.Layer.WMS( "Lớp Mỹ Bình", urlmapfile, 图层:'演示:mybinh', 透明:“真实”, 格式:格式, styleMap: 风格 , singleTile: true, ratio: 1, isBaseLayer: false );

【问题讨论】:

【参考方案1】:

从您的代码 sn-p 中,我假设您希望为 GeoServer 提供的 WMS 图层提供服务。在这种情况下,您会收到由服务器渲染的图像文件,并且样式是 Geoserver (SLD) 的一部分。在客户端(OpenLayers),您只能设置矢量特征的样式。

您可以为图层定义不同的样式 (SLD),并通过更改 WMS 查询参数在样式之间切换(请参阅http://docs.geoserver.org/latest/en/user/services/wms/reference.html)。

【讨论】:

以上是关于如何显示具有多种样式的图层图的主要内容,如果未能解决你的问题,请参考以下文章

arcgis图层 GraphicsLayer与FeatureLayer

2021-02-23 天地图图层类型总结

如何在 mapbox 中为 Geoserver 图层设置动画?

如何从地理服务器中的图层获取样式

怎么让CGridCtrl复选框居中

悬停时如何在图像上添加具有多重混合模式的图层?