[英]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.