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)
});
我想根据标签过滤 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)
});