Filter 不区分大小写的openlayers筛选器不工作
我在openlayers 2.13中有以下过滤器Filter 不区分大小写的openlayers筛选器不工作,filter,openlayers,case-insensitive,geoserver,Filter,Openlayers,Case Insensitive,Geoserver,我在openlayers 2.13中有以下过滤器 var filter_c = new OpenLayers.Filter.Comparison({ type: OpenLayers.Filter.Comparison.LIKE, property: 'strToLowerCase(p_name)', value: '%'+String(document.getElementById("nm").value).toLowerCase()+'%' }); //pass t
var filter_c = new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.LIKE,
property: 'strToLowerCase(p_name)',
value: '%'+String(document.getElementById("nm").value).toLowerCase()+'%'
});
//pass the filter to the layer
var prot = new OpenLayers.Protocol.WFS({
url: "/geoserver/wfs",
featureType: "pins",
featureNS: "http://www.mysite.gr",
defaultFilter: filter_cl
});
var _CallBack = function(resp) {
pins.addFeatures(resp.features)
var cb = pins.features.length;
if (cb == 0){alert("Nothing Found");}
};
var response = prot.read({callback: _CallBack});
//refresh to render POIs
pins.refresh({force:true});
我还使用Geoserver 2.1.3和PostgreSQL 9.1/PostGIS 2.0
此筛选器区分大小写如何使此筛选器不区分大小写?
pins
层从postgreSQL/PostGIS中的表中获取数据。名称用UTF8表示,是希腊语单词,如κρόπολη
,παρθενώνας
等
我只是简单地将它设置为pins=newopenlayers.Layer.Vector(“LayerTitle”,“renderers:[“Canvas”,“SVG”,“VML”]})
,我有前面提到的代码来搜索它
当我使用过滤器时,我没有收到
未找到任何东西
警报,但我在地图上看不到任何点,地图在中心100%缩放。所以,这种过滤器是有效的。我遗漏了什么?您在OpenLayers中传递的参数被发送到GeoServer,因此查询是由GeoServer而不是OpenLayers进行的
您需要查看Geoserver文档,了解它如何进行不区分大小写的查询。请参阅matchCase
属性可能会有所帮助