2012-04-09 3 views
0

오버레이 맵으로 WMS를 사용하고 있습니다. WMS에있는 포인트 shapefile을 필터링하고 싶습니다. 현재 WMS 코드 만 사용하여 전체적으로 표시합니다. 다음은 코드입니다.WMS의 필터 포인트는 어떻게됩니까?

var jpl_wms = new OpenLayers.Layer.WMS("Administrative Layer", 
       "http://localhost:8080/geoserver/test/wms", 
       {layers: "maharashtra_administrative",transparent: true},{isBaseLayer:false}); 
       map.addLayer(jpl_wms); 

이것은 포인트 파일입니다. 매개 변수를 전달하여 표시 할 점을 제한하려고합니다 (즉, < 점 100). 알고 계시다면 도와주세요.

답변

4

필터를 부착하여 WMS 레이어의 포인트를 제한 할 수 있습니다. 먼저 모양 파일의 일부 속성을 기반으로 필터를 만듭니다.

var filter = new OpenLayers.Filter.Comparison({ 
    type: OpenLayers.Filter.Comparison.EQUAL_TO, 
    property: "id", 
    value: 5 
}); 

그러면 필터 개체가 생성됩니다. XML 문자열로 구문 분석해야합니다. 지금 당신은 당신이 당신의 WMS 층에 첨부 할 수있는 문자열을 가지고

var parser = new OpenLayers.Format.Filter.v1_1_0(); 
var filterAsXml = parser.write(filter); 
var xml = new OpenLayers.Format.XML(); 
var filterAsString = xml.write(filterAsXml); 

: 레이어가 이미 redraw() 메소드를 호출 할 수있을 것이다 그려 경우

jpl_wms.params["FILTER"] = filterAsString; 

를 다음 코드는 일을 할 것입니다 필터를 적용하려면 :

jpl_wms.redraw(); 
+0

친구에게주는 결과는 없습니다. VAR 필터 = 새로운 OpenLayers.Filter.Comparison ({ \t \t \t \t \t \t 유형 : OpenLayers.Filter.Comparison.EQUAL_TO, \t \t \t \t \t \t 속성 "타입" \t \t \t \t \t \t 값 : "voltn" }); \t \t \t var parser = new OpenLayers.Format.Filter.v1_1_0(); \t \t \t var filterAsXml = parser.write (filter); \t \t var xml = new OpenLayers.Format.XML(); \t \t var filterAsString = xml.write (filterAsXml); \t \t mah2.params [ "FILTER"] = filterAsString; mah2.redraw(); 이 글은 – Pari

+0

입니다. 응답이 잘되고 있습니다. 감사 – Pari

관련 문제