我有一個過濾器,我不想在啓動應用程序時使用,只有在某個特定的操作上。我知道已經有一個question關於這個,但它不能幫助我,我實際上不明白這兩個答案。如何告訴mapserver忽略過濾器?
我是在「我的專欄=值或1 = 1」的邏輯來獲取我所有的數據集,而不是隻是過濾器,如果它沒有被調用。
這是我寫的:
FILTER (([ct]='%ct%') or '%ct%' = '%ct%')
VALIDATION
'ct' '^[a-zA-Z\-]+$'
END
我打電話給我的層上的OpenLayers 3 PARAM與
url: 'http://localhost:5000/cgi-bin/mapserv.exe?map=/ms4w/apps/tutorial/htdocs/essai.map&SERVICE=WMS&VERSION=1.1.1%20&REQUEST=GetCapabilities', serverType: 'mapserver', params: {'LAYERS': 'aisdata', 'ct':'myvalue', 'TILED': true} });
但回到我的所有數據集。 (如果我刪除我的地圖文件中的'%ct%' = '%ct%'
,該過濾器應用很好)
任何人都可以幫助我忽略我的狀況嗎?
我不明白你的問題。表達式「我的列=值或1 = 1」始終爲真,並且與根本不是過濾器相同。 「你的意思是」如果沒有調用我所有的數據集,而不僅僅是過濾器。「 –
@TommasoDiBucchianico假設我有一層動物(雞,狗,貓)。我希望他們都能顯示在我的地圖上。但是我已經在我的地圖文件中預先定義了一個過濾器,以便以後只能選擇一種類型的動物。由於我的FILTER([動物] =%動物%),如果我不提供任何參數,我的地圖將不顯示任何內容。如果沒有提供參數,我不知道如何在我的FILTER中說我首先需要所有動物(即1 = 1)。如果提供了一個參數,我不希望1 = 1 – So4ne
@TommasoDiBucchianico我知道它總是如此,我需要它永遠是真的。對於(([ct] ='%ct%')或'%ct%'='%ct%')我希望Mapfile(或Postgis?)檢查[ct] ='%ct%'是否返回true FIRST。在我看來,它總是'%ct%'='%ct%',它返回true。或者我需要的是「如果我沒有任何參數設置,然後顯示一切,儘管我的過濾器」 – So4ne