关于OpenLayers的WFS地名点查询中文问题的解决

1. 做个响应按钮:

 <input type="submit" value="查询" id="query" οnclick="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>"

  ....

这里的“*”表示前后都有数据,这样可以做到更人性化了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值