2014-12-05 36 views
1

我需要爲Geoserver創建一個過濾的WMS請求。我正在重寫一個使用OpenLayers.Filter進行這些請求的openlayers 2應用程序。如何在Openlayers 3中將過濾器從API中移除?創建過濾的請求到wms/wfs openlayers 3

這裏有一個例子查詢是如何在2的OpenLayers:

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

回答

2

對於WMS請求,GeoServer的,你可以使用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組合篩選器。

+0

感謝您的描述性答覆。這個概念工作正常! – Cecilie 2014-12-08 10:09:40

+0

嗨@ahocevar是否有辦法稍後刪除'CQL_FILTER'? – 2015-03-31 17:02:28