是否可以在Logical.AND过滤器中包含OpenLayers.Filter.FeatureId

时间:2013-10-16 17:24:07

标签: filter openlayers

我正在尝试在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过滤器?

1 个答案:

答案 0 :(得分:0)

OpenLayers当前版本的过滤器api有一些不一致。有些过滤器会自行获取功能,有些过滤器会获得功能的属性。这打破了,因为OpenLayers.Filter.FeatureID是需要该功能的最多过滤器,并且包括OpenLayers.Filter.Comparison在内的大多数API都在传递要素属性。

我实际上已经为此编写了一个解决方案并将其提供给Github上的OpenLayers社区。随意。

https://github.com/openlayers/openlayers/pull/1138