핑거아이즈는 공간서버인 지오서비스(GeoService-Xr)의 지오프로세싱(Geoprocessing) 서비스를 통해 지오메트리의 버퍼 연산을 수행할 수 있습니다. 아래의 코드는 레이어의 구성 항목 중 하나의 도형에 대해 버퍼 반경값 10으로 하여 버퍼 연산을 수행하는 코드입니다.
var ml:XrMashupLayer = _map.layers.getLayer("myLyr") as XrMashupLayer;
var mashup:IXrMashup = ml.getMashup(0);
if(mashup != null)
{
var wkt:IXrWKT = mashup as IXrWKT;
var strKwt:String = wkt.toWKT();
var loader:URLLoader = new URLLoader();
var url:String = "http://www.gisdeveloper.co.kr/Gp?command=buffer;geometry="
+ strKwt + ";distance=10";
var request:URLRequest = new URLRequest(url);
loader.addEventListener(Event.COMPLETE, onBufferRequestCompleted);
loader.load(request);
}
1번과 2번 코드를 통해 버퍼 연산 대상이 되는 도형을 가져옵니다. 그리고 이 도형에 대한 지오메트리 정보를 WKT 형식으로 변환하는 코드가 5~6번 코드입니다. 마지막으로 7~13번 코드를 통해 공간서버로 요청을 날립니다. 아래의 이미지는 버퍼 연산의 대상이 되는 도형입니다.
버퍼 연산 서비스를 요청하고 그 결과는 onBufferRequestCompleted 함수를 통해 전달되며 다음과 같은 예로 구성될 수 있습니다.
private function onBufferRequestCompleted(event:Event):void
{
var loader:URLLoader = event.target as URLLoader;
var result:String = loader.data;
var ml:XrMashupLayer =
_map.layers.getLayer("myLyr") as XrMashupLayer;
var mashup:IXrMashup = ml.getMashup(0);
if(mashup != null)
{
var wkt:IXrWKT = mashup as IXrWKT;
wkt.fromWKT(result);
ml.updateItem(0, false);
}
loader.removeEventListener(Event.COMPLETE, onBufferRequestCompleted);
}
버퍼 연산 결과에 대한 지오메트리 역시 WKT 형식입니다. 연산 결과를 다시 대상이 되는 도형에 반영하고 있습니다. 그 결과는 다음과 같습니다.