关于OpenLayers的WFS地名点查询中文问题的解决
2011-07-07 16:07
477 查看
1. 做个响应按钮:
<input type="submit" value="查询" id="query" onclick="query()"/>
2. 写JS代码:
(1) get方式请求:
function query(){
var str="碧桂园小区翠林环玉苑46栋03号";
new OpenLayers.Request.GET( {
url : "http://localhost:8080/geoserver/ows?service=WFS&request=GetFeature",
params: {
typeName: "cite:tz_zd_WGS84",
filter:"<Filter><PropertyIsEqualTo><PropertyName>TDZL</PropertyName><Value>"+encodeURI(encodeURI(str))+"</Value></PropertyIsEqualTo></Filter>"
},
callback : handler
});
}
function handler(req){
var GML = req.responseXML;
alert(GML.getElementsByTagName("cite:TDZL")[0].childNodes[0].nodeValue);
}
无法解决中文传输的问题
(2)post方式请求:
function query(){
var xmlPara = "<?xml version='1.0' encoding='UTF-8'?>"
+ "<wfs:GetFeature service='WFS' version='1.0.0' "
+ "xmlns:wfs='http://www.opengis.net/wfs' "
+ "xmlns:gml='http://www.opengis.net/gml' "
+ "xmlns:ogc='http://www.opengis.net/ogc' "
+ "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
+ "xsi:schemaLocation='http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd'>"
+ "<wfs:Query typeName='cite:tz_zd_WGS84' srsName='EPSG:4326'>"
+ "<ogc:Filter>"
+ "<ogc:PropertyIsEqualTo>"
+ "<ogc:PropertyName>TDZL</ogc:PropertyName>"
+ "<ogc:Literal>碧桂园小区翠林环玉苑46栋03号</ogc:Literal>"
+ "</ogc:PropertyIsEqualTo>"
+ "</ogc:Filter>"
+ "</wfs:Query>"
+ "</wfs:GetFeature>";
var request = OpenLayers.Request.POST( {
url : "http://localhost:8080/geoserver/wfs?",
data : xmlPara,
callback : handler
});
}
function handler(req){
var GML = req.responseXML;
alert(GML.getElementsByTagName("cite:TDZL")[0].childNodes[0].nodeValue);
}
这时服务器端就可以传回“碧桂园小区翠林环玉苑46栋03号”,表示查询成功。
3. 一般我们用到模糊查询会更多一点,这里只需要做一些改动
var str = txt.value; //这里接受一个输入框的信息
....
+ "<ogc:Filter>"
+ "<ogc:PropertyIsLike wildCard='*' singleChar='.' escape='!'>"
+ "<ogc:PropertyName>TDZL</ogc:PropertyName>"
+ "<ogc:Literal>*"+str+"*</ogc:Literal>"
+ "</ogc:PropertyIsLike>"
+ "</ogc:Filter>"
....
这里的“*”表示前后都有数据,这样可以做到更人性化了。
<input type="submit" value="查询" id="query" onclick="query()"/>
2. 写JS代码:
(1) get方式请求:
function query(){
var str="碧桂园小区翠林环玉苑46栋03号";
new OpenLayers.Request.GET( {
url : "http://localhost:8080/geoserver/ows?service=WFS&request=GetFeature",
params: {
typeName: "cite:tz_zd_WGS84",
filter:"<Filter><PropertyIsEqualTo><PropertyName>TDZL</PropertyName><Value>"+encodeURI(encodeURI(str))+"</Value></PropertyIsEqualTo></Filter>"
},
callback : handler
});
}
function handler(req){
var GML = req.responseXML;
alert(GML.getElementsByTagName("cite:TDZL")[0].childNodes[0].nodeValue);
}
无法解决中文传输的问题
(2)post方式请求:
function query(){
var xmlPara = "<?xml version='1.0' encoding='UTF-8'?>"
+ "<wfs:GetFeature service='WFS' version='1.0.0' "
+ "xmlns:wfs='http://www.opengis.net/wfs' "
+ "xmlns:gml='http://www.opengis.net/gml' "
+ "xmlns:ogc='http://www.opengis.net/ogc' "
+ "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
+ "xsi:schemaLocation='http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd'>"
+ "<wfs:Query typeName='cite:tz_zd_WGS84' srsName='EPSG:4326'>"
+ "<ogc:Filter>"
+ "<ogc:PropertyIsEqualTo>"
+ "<ogc:PropertyName>TDZL</ogc:PropertyName>"
+ "<ogc:Literal>碧桂园小区翠林环玉苑46栋03号</ogc:Literal>"
+ "</ogc:PropertyIsEqualTo>"
+ "</ogc:Filter>"
+ "</wfs:Query>"
+ "</wfs:GetFeature>";
var request = OpenLayers.Request.POST( {
url : "http://localhost:8080/geoserver/wfs?",
data : xmlPara,
callback : handler
});
}
function handler(req){
var GML = req.responseXML;
alert(GML.getElementsByTagName("cite:TDZL")[0].childNodes[0].nodeValue);
}
这时服务器端就可以传回“碧桂园小区翠林环玉苑46栋03号”,表示查询成功。
3. 一般我们用到模糊查询会更多一点,这里只需要做一些改动
var str = txt.value; //这里接受一个输入框的信息
....
+ "<ogc:Filter>"
+ "<ogc:PropertyIsLike wildCard='*' singleChar='.' escape='!'>"
+ "<ogc:PropertyName>TDZL</ogc:PropertyName>"
+ "<ogc:Literal>*"+str+"*</ogc:Literal>"
+ "</ogc:PropertyIsLike>"
+ "</ogc:Filter>"
....
这里的“*”表示前后都有数据,这样可以做到更人性化了。
相关文章推荐
- 关于OpenLayers的WFS地名点查询中文问题的解决
- 关于Hibernate 查询语句中文乱码问题的解决
- MySQL 中文模糊查询不正确问题解决方案 .
- 关于mysql中文插入 问号??问题的解决方法!
- MyBatis 【问题】解决java连接mysql查询含中文无数据的问题
- 关于vs2013中不能输入中文的问题解决方法
- 解决关于php中文文件下载问题
- 关于eclipse导入项目properties文件中文编码乱码问题的解决
- 关于解决mysql workbench无法插入中文的问题
- 关于win10输入法问题(打不出中文)解决方法
- 关于eclipse 中文注释时中文字体太小的问题解决
- 关于hibernate查询视图时,相同主键的两条记录映射问题【已解决】
- 关于Spring boot中读取属性配置文件出现中文乱码的问题的解决
- plsql查询中文乱码问题解决方法
- 关于解决CommunityServer使用中文名字注册自动创建博客和相册的问题
- 关于ASP.NET“操作必须使用一个可更新的查询”问题的解决方法
- 关于放入cookie中的中文取出后变乱码的问题及解决办法!
- 关于SQL Server无法查询中文的问题
- 关于解决安卓导入工程时中文注释出现乱码问题
- 关于Linux下usb(vfat格式)挂载中文乱码问题的解决