我想基于标签过滤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*
});
答案 0 :(得分:0)
好的,找到了办法 - 非常简单。 只需要使用正则表达式对象作为过滤值:
new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.LIKE,
property: "tags",
value: new RegExp(tag)
});