OpenLayers中基于标记的过滤器

时间:2015-09-23 11:12:06

标签: javascript jquery regex openlayers

我想基于标签过滤OpenLayers(2)矢量图层。因此,矢量图层具有一个属性列,该列可以用逗号分隔的标签填充,例如, "文化,食物,公园",但也只有一个标签,例如"食品&#34 ;.我想显示所有具有一个标签的功能"已激活"通过各自的jquery控制按钮。

每个功能只有一个标签,它使用以下代码:

tags = ['school','food','park'];

activeTags = [];
function fillArrayOfFilters() {
  activeLayers = [];
  $.each(tags, function(id, tag) {
    if ($('#' + this).hasClass('active') == true) {
      activeTags.push(tags);
    };
  });
  filters = activeLayers.map(function(tag, id) {
    return new OpenLayers.Filter.Comparison({
        type: OpenLayers.Filter.Comparison.EQUAL_TO,
        property: "tags",
        value: tag
      });
  });
}

function filter() {
  var filter = new OpenLayers.Filter.Logical({
    type: OpenLayers.Filter.Logical.OR,
    filters: filters
  });
  filterStrategy.setFilter(filter);
};

我知道OpenLayers中有一个LIKE比较。但是我怎么能在这种情况下使用它呢?我想要这样的东西:

  new OpenLayers.Filter.Comparison({
    type: OpenLayers.Filter.Comparison.LIKE,
    property: "tags",
    value: *tag*
  });

1 个答案:

答案 0 :(得分:0)

好的,找到了办法 - 非常简单。 只需要使用正则表达式对象作为过滤值:

  new OpenLayers.Filter.Comparison({
    type: OpenLayers.Filter.Comparison.LIKE,
    property: "tags",
    value: new RegExp(tag)
  });