我需要为Geoserver创建一个过滤的WMS请求。我正在重写一个openlayers 2应用程序,它使用OpenLayers.Filter发出这些请求。如何在Openlayers 3中完成此操作,其中过滤器从API中删除?
以下是查询在Openlayers 2中的示例:
function dateFilter(date) {
var dateTimeFilterArray = [];
var dateFilter = new OL.Filter.Comparison({
type : OL.Filter.Comparison.BETWEEN,
property : "stdate",
lowerBoundary : date.fromDate,
upperBoundary : date.toDate
});
dateTimeFilterArray.push(dateFilter);
var timeFilter = new OL.Filter.Comparison({
type : OL.Filter.Comparison.BETWEEN,
property : "sttime",
lowerBoundary : date.fromTime,
upperBoundary : date.toTime
});
dateTimeFilterArray.push(timeFilter);
return combineFilters(dateTimeFilterArray);
}
答案 0 :(得分:2)
对于对GeoServer的WMS请求,您可以使用CQL过滤器,例如
function dateFilter(date) {
var dateFilter =
'stdate BETWEEN ' + date.fromDate + ' AND ' + date.toDate;
var timeFilter =
'sttime BETWEEN ' + date.fromTime + ' AND ' + date.toTime;
return '(' + dateFilter + ') AND (' timeFilter + ')';
}
wmsSource.updateParams({
CQL_FILTER: dateFilter(date)
});
请阅读ECQL reference中的日期和时间字面值,以确保使用正确的CQL过滤器日期和时间格式。我上面的代码段假定您的date
对象的属性已经是正确的格式。它还假设您当前的combineFilters()
函数使用逻辑AND
组合过滤器。