如何显示具有多种样式的图层图
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