html动态 %3coption%3e,动态改变SLD

2023-10-12 18:10

本文主要是介绍html动态 %3coption%3e,动态改变SLD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以下来源于“演示”——DemoRequest——WMS_getMap_SLD_BODY_LiteralMode.url

以此URL为样本进行过滤操作。

http://localhost:8080/geoserver/wms?bbox=-130,24,-66,50&Format=image/png&request=GetMap&width=550&height=250&srs=EPSG:4326&SLD_BODY=topp:statesUserSelectionSTATE_NAMEIllinois#FF0000

测试:

OpenLayers TileCacheExample

var sld,map,layer;

function init(){

sld= "topp:states       UserSelection                                                STATE_NAME               Nebraska                                                               #FF0000                                           STATE_NAME                   20           normal           bold                                                        0.5              0.5                                                     #FFFFFF                                                                                                                      ";

map = new OpenLayers.Map('map');

layer= new OpenLayers.Layer.WMS("MY WMS",

"http://127.0.0.1:8080/geoserver/wms",{

layers: 'topp:states',

SLD_BODY:sld

});

map.addLayer(layer);

map.addControl(newOpenLayers.Control.LayerSwitcher());

var lonlat=newOpenLayers.LonLat(-100.63477, 39.28711);

map.setCenter(lonlat, 4);//指定地图中心与初始缩放级别

map.addControl(newOpenLayers.Control.MousePosition());

}

function commit(){

var Name;

var formElement =document.getElementsByName('sel')[0];

//  console.log(formElement.length);

for(i = 0; i < formElement.length; i++) {

if(formElement[i].selected == true) {

Name= formElement[i].text; //关键是通过option对象的innerText属性获取到选项文本

//alert(Name);

}

}

var newsld = sld.replace("Nebraska",  Name);

layer.mergeNewParams({"sld_body":newsld});

map.addLayer(layer);

}

输入地名:

California

Arizona

Texas

New Mexico

Louisiana

0818b9ca8b590ca3270a3433284dd417.png

去掉红字部分就不显示边界了:

0818b9ca8b590ca3270a3433284dd417.png

对道路进行测试

教训:SLD中有汉字不能被解析,最好用英文作为属性值!!!

OpenLayers TileCacheExample

var sld,map,layer;

function init(){

//下面两个sld有点区别,都是正确的

//sld = "KunMing:test_street       UserSelection                             Kind           6               #0000FF              #ff00008                                                                                                                ";

sld="KunMing:test_streetUserSelectionKind6               #0000FF              #ff00008    ";

map= new OpenLayers.Map('map');

layer= new OpenLayers.Layer.WMS("MY WMS",

"http://127.0.0.1:8080/geoserver/wms",{

layers: 'KunMing:test_street',

SLD_BODY:sld

});

map.addLayer(layer);

map.addControl(newOpenLayers.Control.LayerSwitcher());

//var lonlat=newOpenLayers.LonLat(-100.63477, 39.28711);

//map.setCenter(lonlat, 4);//指定地图中心与初始缩放级别

map.setCenter(newOpenLayers.LonLat(102.73961, 25.05655), 15);

map.addControl(newOpenLayers.Control.MousePosition());

}

function commit(){

var Name;

var formElement =document.getElementsByName('sel')[0];

//  console.log(formElement.length);

for(i = 0; i < formElement.length; i++) {

if(formElement[i].selected == true) {

Name= formElement[i].text; //关键是通过option对象的innerText属性获取到选项文本

//alert(Name);

}

}

var newsld = sld.replace("白云路",  Name);

alert(newsld);

layer.mergeNewParams({"sld_body":newsld});

map.addLayer(layer);

}

输入地名:

白龙路

白云路

说明:按钮没有起作用。原因如上所述:SLD中有汉字不能被解析,最好用英文作为属性值!!!

如果把Kind          6改为name          白龙路将不能得到结果。

改进的办法是在shapefile文件中建立一个英文字段,在select菜单中的value属性填上这些英文属性,获取时获取这些value的值,而不是text(表面显示text)。

0818b9ca8b590ca3270a3433284dd417.png

两个SLD的区别:

Sld1 = "KunMing:test_street        UserSelection                            Kind           6               #0000FF              #ff00008                                                                                             ";

Sld2 = "KunMing:test_street       UserSelection                            Kind           6               #0000FF              #ff00008                                                                                                       ";

两者相差红色部分,结果前者显示了原来的默认道路,后者直接显示样式图片。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

显示道路名:

sld = "KunMing:test_street       UserSelection                             Kind           6               #0000FF              #ff00008                          name    宋体20 normal              bold    true          90400            50                                                                                            ";

0818b9ca8b590ca3270a3433284dd417.png

总的来说有以下三种方法:第二种没能实现,可能要把文件放在Tomcat中,IIS拒绝访问,有空可以试下。

1.The client interacts with the WMSusing HTTP GET but the request can reference

a remote SLD:

http://yourfavoritesite.com/WMS?

VERSION=1.1.0&

REQUEST=GetMap&

BBOX=0.0,0.0,1.0,1.0&

LAYERS=Rivers,Roads,Houses&

STYLES=CenterLine,CenterLine,Outline&

WIDTH=400&

HEIGHT=400&

FORMAT=PNG2.The client uses the HTTP GET method but includes the SLD XML documentinline

with the GET request in an SLD_BODY CGI parameter (with appropriate

character encoding):http://yourfavoritesite.com/WMS?

VERSION=1.0.5&

REQUEST=GetMap&

SRS=EPSG%3A4326&

BBOX=0.0,0.0,1.0,1.0&

SLD=http%3A%2F%2Fmyclientsite.com%2FmySLD.xml&

WIDTH=400&

HEIGHT=400&

FORMAT=PNG2.The client interacts with the WMS usingHTTP POST with the GetMap request

encoded in XML and including an embedded SLD:http://yourfavoritesite.com/WMS?

VERSION=1.0.5&

REQUEST=GetMap&

SRS=EPSG%3A4326&

BBOX=0.0,0.0,1.0,1.0&

SLD_BODY=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%

3F%3E%3C!DOCTYPE+StyledLayerDescriptor+SYSTEM+%22http%3A%2F%2Fsom

.site.com%2Fsld%2Fsld_072.xsd%22%3E%3CStyledLayerDescriptor+versi

on%3D%221.0.0%22%3E%3CNamedLayer%3E%3CName%3ERivers%3C%2FName%3E%

3CNamedStyle%3E%3CName%3ECenterLine%3C%2FName%3E%3C%2FNamedStyle%

3E%3C%2FNamedLayer%3E%3CNamedLayer%3E%3CName%3ERoads%3C%2FName%3E

%3CNamedStyle%3E%3CName%3ECenterLine%3C%2FName%3E%3C%2FNamedStyle

%3E%3C%2FNamedLayer%3E%3CNamedLayer%3E%3CName%3EHouses%3C%2FName%

3E%3CNamedStyle%3E%3CName%3EOutline%3C%2FName%3E%3C%2FNamedStyle%

3E%3C%2FNamedLayer%3E%3C%2FStyledLayerDescriptor%3E&WIDTH=400&

HEIGHT=400&

FORMAT=PNG

样式学习告一段落!

这篇关于html动态 %3coption%3e,动态改变SLD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197559

相关文章

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行