Это не имеет прямого отношения к OpenLayers, это больше о ваших знаниях JavaScript
Вы можете создать функцию для предоставления объекта new ol.format.WFS().writeGetFeature(
Так твой код
var featureRequest = new ol.format.WFS().writeGetFeature({
srsName: 'EPSG:4326',
featureNS: 'http://myserver',
featurePrefix: 'locations',
featureTypes: ['photos'],
outputFormat: 'application/json',
filter: ol.format.filter.and(
ol.format.filter.during('DATE', '2015-11-27T05:00:00Z',
'2015-12-31T05:00:00Z'),
ol.format.filter.exactTo('Category', 'Church')
)
});
превратится в
var getFeatureParams = function(filter) {
return {
srsName: 'EPSG:4326',
featureNS: 'http://myserver',
featurePrefix: 'locations',
featureTypes: ['photos'],
outputFormat: 'application/json',
filter: filter
}
}
var yourDynamicFilter = ol.format.filter.and(
ol.format.filter.during('DATE', '2015-11-27T05:00:00Z',
'2015-12-31T05:00:00Z'),
ol.format.filter.exactTo('Category', 'Church')
);
var featureRequest = new ol.format.WFS().writeGetFeature(getFeatureParams(yourDynamicFilter));
PS: код, написанный в стиле ES5, возможно, вы захотите обновить его до синтаксиса ES6.