我正在尝试在OpenLayers中构建一个Logical.AND过滤器,它将FeatureID过滤器与Comparison.EQUAL_TO过滤器结合在一起。目标是过滤由其fid过滤的一组要素中的属性。这是一些示例代码:
var compfltr= new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.EQUAL_TO,
property: 'cat',
value: 'restaurant'
});
var idfltr= new OpenLayers.Filter.FeatureId({
fids: ['f09de70a-9629-4aac-afd2-00375d7e920f', '77d51ff0-6f85-4503-90ca-27d78e270ebd', '5d19df37-ed3b-4e06-8ca2-001b832713dc', '36841c4f-cfc9-4440-beb3-001dd7a9a754', '4ca129c9-62e4-41b8-8a49-00239612cd59']
});
var selfilter = new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.AND
});
selfilter.filters.push(compfltr)
selfilter.filters.push(idfltr)
var rule = new OpenLayers.Rule({
filter: selfilter,
symbolizer: { fillColor: "#7FCC7F", fillOpacity: 0.9, strokeColor: "#7FCC7F", strokeOpacity: 0.5, strokeWidth: 12, pointRadius: 10 }
});
使用其他过滤器类型构建Logical.AND过滤器没有问题,但是当我包含FeatureId过滤器时,它会失败。是否无法在逻辑过滤器中使用FeatureId过滤器?
答案 0 :(得分:0)
OpenLayers当前版本的过滤器api有一些不一致。有些过滤器会自行获取功能,有些过滤器会获得功能的属性。这打破了,因为OpenLayers.Filter.FeatureID是需要该功能的最多过滤器,并且包括OpenLayers.Filter.Comparison在内的大多数API都在传递要素属性。
我实际上已经为此编写了一个解决方案并将其提供给Github上的OpenLayers社区。随意。