Geometry로 Feature를 가져온다는 의미는 임의의 지오메트리와 공간상에서 교차하는 Feature를 가져온다는 의미입니다. 임의의 지오메트리이므로 폴리곤, 폴리라인, 포인트 등 제약이 없습니다. 기준 지오메트리는 WKT 형식으로 쉽게 지정할 수 있습니다. 다음은 지정한 폴리라인과 교차하는 Feature를 서버측으로부터 가져오라는 코드 예입니다.
var pnuLyr:XrShapeMapLayer = map.layers.getLayer("JIBUN") as XrShapeMapLayer; if(pnuLyr != null) { var bOK:Boolean = pnuLyr.queryByGeometry( "LINESTRING(250661 54225, 250343 53233)", true, callback); if(!bOK) { // Error ! } }
대상이 되는 레이어를 1번 코드를 통해 가져옵니다. 속성과 도형에 대한 기능이므로 XrShapeMapLayer만이 가능합니다. 그리고 4번에서 queryByGeometry 매서드를 통해 쿼리 합니다. 첫번째 인자는 기준 지오메트리로써 WKT 형식으로 지정합니다. 그리고 두번째 인자는 도형 데이터 뿐만 아니라 속성 데이터까지 가져오라는 의미입니다. 그리고 세번째 인자는 공간 데이터 쿼리가 완료되었을때 발생하는 콜백함수이며 아래는 그 예입니다.
private function callback(arg:XrSpatialQueryResult):void { if(arg != null) { var shp:IXrShape = null; var shapes:Object = arg.shapeSet.rows; for each(shp in shapes) { var attribute:XrAttributes = arg.attributeSet.rows[shp.fid] as XrAttribute; if(attribute != null) { trace(shp.centroid.x + " " + shp.centroid.y + " " + attribute.getValueAsString(1)); } } } else { // 아무것도 오질 않았음.. } }
서버 측으로 받은 결과에서 도형의 중심점과 2번째 속성값만을 확인하는 예입니다.