openlayers-3
2015-11-02 49 views 0 likes 
0

這是我的OpenLayers 3.9.0像定製列表過濾器設置剎車通配符過濾

var cqlFilter = "name='testpoint9'"; 
var urlTemplate = 'http://localhost:5550/geoserver/mymap/wfs? 


var sourceVector = new ol.source.Vector({ 
service=WFS&version=1.0.0&request=GetFeature&typeName=mymap:layer&CQL_FILTER={{CQLFILTER}}&outputFormat=application/json'; 
loader : function (extent) { 
     var url = urlTemplate.replace('{{CQLFILTER}}', cqlFilter); 
     $.ajax(url, { 
      type: 'GET', 
      success: function(response) { 
       var res = response.responseText; 
       var geojsonFormat = new ol.format.GeoJSON(); 
       sourceVector.addFeatures(geojsonFormat.readFeatures(response)); 
      } 
     }) 
    }; 

strategy : new ol.loadingstrategy.tile(ol.tilegrid.createXYZ({maxZoom: 20})); 
}) 

function changeFilter() { 
    var featsToRemove = layerVector.getSource().getFeatures(); 
    for (var f=0;f<featsToRemove.length;f++) 
    { 
     layerVector.getSource().removeFeature(featsToRemove[f]); 
    } 
    cqlFilter = "name LIKE 'p'"; 
    sourceVector.clear(true); 

} 

changeFilter功能過濾器用戶點擊按鈕之後被調用。更改全局變量cqlFilter並重新加載功能。

的問題是,定製列表過濾器現在工作"name LIKE 'p'",但如果我嘗試添加一個通配符,發現與對"name LIKE 'p%'"這不會工作開始的名字,我也沒有得到任何錯誤消息。

我該如何解決這個問題?

謝謝

回答

1

嘗試爲你的cql filter使用encodeURIComponent函數。像這樣:

cqlFilter = "name LIKE 'p%'"; encodedFilter = encodeURIComponent(cqlFilter);

+0

認爲這是一個過濾器相關的事情。謝謝 – slevin

+0

沒有probs amigo。樂意效勞 – pavlos

相關問題