2011-11-30 193 views
1

是否有可能/是否有一种解决方法来比较OpenLayers.Filter.Comparison中的第二层次价值?OpenLayers比较过滤器/对象属性

feature.attributes/context is sth。像:

{'foo': 'bar', 'baz': {'lorem': 'ipsum', 'dolor': 'sit'}, 'amet': 1337} 

规则看起来像这样:

var rule = new OpenLayers.Rule({ 
    filter: new OpenLayers.Filter.Comparison({ 
    type: '==', 
    property: 'baz.dolor', /* <- this does not work! */ 
    value: 'sit' 
    }), 
    symbolizer: { 
    graphic: true, 
    graphicZIndex: 100, 
    backgroundGraphicZIndex: 500, 
    externalGraphic: OpenLayers.Util.getImagesLocation() + 'foo.png', 
    graphicHeight: 22, 
    graphicWidth: 22, 
    graphicTitle: '${display_name}', 
    strokeColor: '#FF0000' 
    } 
}); 

回答

3

可以使用OpenLayers.Filter.Function过滤器:

var filter = new OpenLayers.Filter.Function({ 
    evaluate: function(attributes) { 
     return attributes.baz.dolor === 'sit'; 
    } 
}); 

(未经测试的例子)

+0

THX。我是盲人;) – pjeweb

+0

只是有点评论:传递给评估参数实际上是功能,而不是它的属性。所以它会是:'返回feature.attributes.baz.dolor ==='坐' – BiAiB