2011-11-30 122 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