핑거아이즈는 공간서버인 지오서비스(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 형식입니다. 연산 결과를 다시 대상이 되는 도형에 반영하고 있습니다. 그 결과는 다음과 같습니다.