1

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

4

1 回答 1

0

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

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

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

于 2013-10-16T19:20:20.423 回答