2013-10-16 1 views
1

FeatureID 필터와 Comparison.EQUAL_TO 필터를 결합한 OpenLayers에서 Logical.AND 필터를 구성하려고합니다. 목표는 fids로 필터링 된 기능 세트 중에서 속성을 필터링하는 것입니다. 여기에 몇 가지 예제 코드입니다 :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 필터를 포함 할 때 오류가 발생합니다. Logical 필터에서 FeatureId 필터를 사용할 수 있습니까?

답변

0

OpenLayers 현재 버전의 필터 API에는 약간의 불일치가 있습니다. 일부 필터는 기능 자체를 가져오고 일부는 기능의 속성을 가져옵니다. OpenLayers.Filter.FeatureID가이 기능을 필요로하는 필터 중 가장 많고 OpenLayers.Filter.Comparison을 비롯한 대부분의 API가 기능 속성을 전달하므로이 문제가 발생합니다.

사실 나는이 솔루션을 작성하여 Github의 OpenLayers 커뮤니티에 제공했습니다. 기분이 자유 롭다.

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

+0

내 의혹을 확인해 주셔서 감사합니다. 당신의 해결책을 살펴 보겠습니다. – user2887374

+0

Github에 사례/what-have-ya를 자유롭게 덧붙여주십시오. 나는 의견을 좋아한다. – kjelderg

관련 문제