OpenLayers 中基于标签的过滤器

tag based filter in OpenLayers

我想根据标签过滤 OpenLayers(2) 矢量图层。因此,矢量图层有一个 属性 列,可以用逗号分隔的标签填充,例如"culture,food,park",但也只有一个标签,例如"food"。我想通过相应的 jquery 控制按钮显示具有一个标签 "activated" 的所有功能。

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

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*
  });

好的,找到方法了——很简单。 一个只需要使用一个正则表达式对象作为过滤值:

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