Фильтр сравнения OpenLayers / Свойство объекта - PullRequest
1 голос
/ 30 ноября 2011

Возможно / есть ли обходной путь для сравнения свойств второго уровня в OpenLayers.Filter.Comparison?

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'
  }
});

1 Ответ

3 голосов
/ 30 ноября 2011

Вы можете использовать фильтр OpenLayers.Filter.Function:

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

(непроверенный пример)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...