【问题标题】:case insensitive openlayers filter not working不区分大小写的开放层过滤器不起作用
【发布时间】:2014-03-09 22:40:24
【问题描述】:

我在 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 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 = new OpenLayers.Layer.Vector("LayerTitle", {renderers: ["Canvas", "SVG", "VML"]}),然后我有上述代码来搜索它。

当我使用过滤器时,我没有收到Nothing found 警报,但我在地图上看不到任何点,并且地图在中心缩放 100%。所以,过滤器的工作原理。我错过了什么?

【问题讨论】:

    标签: filter openlayers case-insensitive geoserver


    【解决方案1】:

    你在OpenLayers中传递的参数被发送到GeoServer,所以查询是由geoserver而不是OpenLayers进行的。

    您需要查看 Geoserver 文档以了解它如何进行不区分大小写的查询。请参阅http://docs.geoserver.org/latest/en/user/styling/sld-reference/filters.html,也许matchCase 属性会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 2013-06-20
      • 2013-10-24
      • 2016-03-15
      • 2022-12-02
      • 1970-01-01
      相关资源
      最近更新 更多