繁体   English   中英

OpenLayers中基于标签的过滤器

[英]tag based filter in OpenLayers

我想基于标签过滤OpenLayers(2)矢量层。 因此,矢量层具有一个属性列,该列可由逗号分隔的标签(例如“文化,食品,公园”)填充,但也只能由一个标签(例如“ food”)填充。 我想显示所有由一个由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*
  });

好的,找到了一种方法-非常简单。 只需使用正则表达式对象作为过滤器值即可:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM