수치지도 데이터를 처리하는 레이어인 XrShapeMapLayer는 filterFunction이라는 콜백함수 기능을 제공합니다. 이 기능은 공간 서버로부터 공간 데이터를 가져오고 화면에 표시하기 전에 가져온 공간 데이터에 대한 선처리(Preprocessing)을 수행하는 용도로 사용됩니다. 아래의 코드는 XrShapeMapLayer에 filterFunction 콜백함수를 지정하는 코드입니다.
var layer:XrShapeMapLayer = null; layer = map.layers.getLayer("LAYER_NAME") as XrShapeMapLayer; layer.filterFunction = filterFunction;
여기서 filterFunction은 다음과 같은 인자를 갖습니다. FingerEyes-Xr 버전 2.2를 기준으로 다릅니다.
ㅡ FingerEyes-Xr version 2.2 이상
// FingerEyes-Xr version 2.2 이상 private function filterFunction(fid:uint, shpLyr:XrShapeMapLayer, index:uint, cntRows:uint):void { // ... }
ㅡ FingerEyes-Xr version 2.2 미만
// FingerEyes-Xr version 2.2 미만 private function filterFunction(fid:uint, shpSet:XrShapeSet, attSet:XrAttributeSet):void { // ... }
이 기능은 다양한 용도로 사용될 수 있습니다. 예를 들자면 어떤 기준에 부합되지 않으면 공간 데이터를 화면에 그리기 전에 공간 데이터를 제거함으로써 화면에 표시하지 않는 경우입니다.
ㅡ FingerEyes-Xr version 2.2 이상
// FingerEyes-Xr version 2.2 이상 private function filterFunction(fid:uint, shpLyr:XrShapeMapLayer, index:uint, cntRows:uint):void { var shpSet = shpLyr.shapeSet; var attSet = shpLyr.attributeSet; var attr:XrAttribute = attSet.rows[fid]; var bBeDelete:Boolean = true; var from:int, to:int, value:int; value = attr.getValueAsInt(13); from = this.nsDeathFrom.value; to = this.nsDeathTo.value; if(value >= from && value <= to) bBeDelete = false; f(bBeDelete) { shpSet.removeRow(fid); attSet.removeRow(fid); } }
ㅡ FingerEyes-Xr version 2.2 미만
// FingerEyes-Xr version 2.2 미만 private function filterFunction(fid:uint, shpSet:XrShapeSet, attSet:XrAttributeSet):void { var attr:XrAttribute = attSet.rows[fid]; var bBeDelete:Boolean = true; var from:int, to:int, value:int; value = attr.getValueAsInt(13); from = this.nsDeathFrom.value; to = this.nsDeathTo.value; if(value >= from && value <= to) bBeDelete = false; f(bBeDelete) { shpSet.removeRow(fid); attSet.removeRow(fid); } }
위의 코드는 공간 데이터에 대한 13번째 속성값이 정해진 범위값에 들어가지 않을 경우 그리기 전에 제거함으로써 화면에 표시하지 않도록 하는 코드예입니다.