수치지도 데이터를 처리하는 레이어인 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번째 속성값이 정해진 범위값에 들어가지 않을 경우 그리기 전에 제거함으로써 화면에 표시하지 않도록 하는 코드예입니다.