使用Geoserver中的Javascript动态设置WMS层的样式
我的web应用程序通过Geoserver2.6.0从Postgis向OpenLayers地图提供WMS图层,该应用程序运行良好,符合预期。 用户可以通过属性(通过HTML中的下拉框)过滤WMS层的某些元素,并按预期更新层。 现在我想添加一个附加的下拉框,根据附加的下拉框值改变WMS层的样式。 附加下拉列表的样式选项非常简单,“普通”或“高亮”。我认为在javascript中使用一个简单的“if-else”语句将迫使层以这两种样式之一绘制。不幸的是,当用户选择新样式并单击“更新”按钮时,样式没有更新,经过几天的努力,我完全被卡住了 图层样式的SLD语法可以单独工作(它们在Gesoserver界面中进行验证),但它们不能以这种方式一起工作,只剩下第一种样式 在类似的帖子中,我发现最接近的是这两个,但这似乎并不能解决我的问题 有什么想法吗? 提前感谢,代码如下 HTML的代码使用Geoserver中的Javascript动态设置WMS层的样式,javascript,geoserver,wms,sld,Javascript,Geoserver,Wms,Sld,我的web应用程序通过Geoserver2.6.0从Postgis向OpenLayers地图提供WMS图层,该应用程序运行良好,符合预期。 用户可以通过属性(通过HTML中的下拉框)过滤WMS层的某些元素,并按预期更新层。 现在我想添加一个附加的下拉框,根据附加的下拉框值改变WMS层的样式。 附加下拉列表的样式选项非常简单,“普通”或“高亮”。我认为在javascript中使用一个简单的“if-else”语句将迫使层以这两种样式之一绘制。不幸的是,当用户选择新样式并单击“更新”按钮时,样式没有更
国家/地区筛选器:
英格兰
威尔士
道路类型过滤器:
主干道
次要道路
状态筛选器:
使用中
在建工程
线条样式:
正常的
突出
我最终设法解决了这个问题——结果是我的“if”语句出现了问题,因为它只需要简化。
相关(工作)javascript如下所示
if(line\u style.value==“正常”){
layer.clearGrid();//这将摆脱以前的WMS显示。。。
layer.mergeNewParams({
“样式”:“图层\普通”,
“CQL_过滤器”:cql1.value+”和“+cql2.value+”和“+cql3.value+”和“+cql4.value”
})
}
否则{
layer.clearGrid();//这将摆脱以前的WMS显示。。。
layer.mergeNewParams({
“样式”:“图层突出显示”,
“CQL_过滤器”:cql1.value+”和“+cql2.value+”和“+cql3.value+”和“+cql4.value”
})
}
重绘({force:true})代码>