2013-10-16 68 views
1

我試圖在OpenLayers中構造一個Logical.AND篩選器,該篩選器將FeatureID篩選器與Comparison.EQUAL_TO篩選器相結合。我們的目標是過濾一組由fid過濾的功能中的屬性。下面是一些示例代碼:是否有可能在一個Logical.AND篩選器中包含OpenLayers.Filter.FeatureId

 var compfltr= new OpenLayers.Filter.Comparison({ 
      type: OpenLayers.Filter.Comparison.EQUAL_TO, 
      property: 'cat', 
      value: 'restaurant' 
     }); 

     var idfltr= new OpenLayers.Filter.FeatureId({ 
      fids: ['f09de70a-9629-4aac-afd2-00375d7e920f', '77d51ff0-6f85-4503-90ca-27d78e270ebd', '5d19df37-ed3b-4e06-8ca2-001b832713dc', '36841c4f-cfc9-4440-beb3-001dd7a9a754', '4ca129c9-62e4-41b8-8a49-00239612cd59'] 
     }); 

     var selfilter = new OpenLayers.Filter.Logical({ 
      type: OpenLayers.Filter.Logical.AND 
     }); 
     selfilter.filters.push(compfltr) 
     selfilter.filters.push(idfltr) 

     var rule = new OpenLayers.Rule({ 
      filter: selfilter, 
      symbolizer: { fillColor: "#7FCC7F", fillOpacity: 0.9, strokeColor: "#7FCC7F", strokeOpacity: 0.5, strokeWidth: 12, pointRadius: 10 } 
     }); 

我沒有問題,構建與其它濾波器類型一個Logical.AND過濾器,但是當我包括FEATUREID過濾器失敗。在邏輯過濾器中使用FeatureId過濾器是不可能的?

回答

0

OpenLayers當前版本的過濾API有點不一致。有些過濾器自己獲取特徵,有些獲取特徵的屬性。因爲OpenLayers.Filter.FeatureID是需要該功能的最多過濾器,並且包括OpenLayers.Filter.Comparison在內的大多數API都傳遞了這些功能屬性,所以這會導致崩潰。

我實際上已經寫了一個解決方案,並將它提供給Github上的OpenLayers社區。隨意。

https://github.com/openlayers/openlayers/pull/1138

+0

非常感謝您的確認我的懷疑!我會看看你的解決方案。 – user2887374

+0

隨意評論/添加例子/ what-have-ya到Github。我喜歡反饋。 – kjelderg

相關問題