/* * Function That takes all the graphics in a defined GraphicsLayer and adds unions them into one geometry * @param GraphicsLayer gl is the graphics layer to union * @return Geometry of the unioned graphics */ private function unionGeoms2(gl:GraphicsLayer):Geometry { var retGeom:Geometry; var mPoint:Multipoint = new Multipoint(null); mPoint.spatialReference = map.spatialReference; var mPoly:Polygon = new Polygon(null); mPoly.spatialReference = map.spatialReference; var mPolyL:Polyline = new Polyline(null); mPolyL.spatialReference = map.spatialReference; var rType:String; for each (var graphic:Graphic in gl.graphicProvider){ if(graphic.geometry.type == "esriGeometryPoint" && !addTolerance.selected){ mPoint.addPoint(graphic.geometry as MapPoint); rType = "point"; }else if (graphic.geometry.type == "esriGeometryPoint" && addTolerance.selected){ var ext2:Extent = createExtentAroundMapPoint(graphic.geometry as MapPoint, pointSearchTolerance) as Extent; var pA2:Array = []; pA2.push(new MapPoint(ext2.xmin,ext2.ymin,ext2.spatialReference)); pA2.push(new MapPoint(ext2.xmin,ext2.ymax,ext2.spatialReference)); pA2.push(new MapPoint(ext2.xmax,ext2.ymax,ext2.spatialReference)); pA2.push(new MapPoint(ext2.xmax,ext2.ymin,ext2.spatialReference)); pA2.push(new MapPoint(ext2.xmin,ext2.ymin,ext2.spatialReference)); mPoly.addRing(pA2); rType = "poly"; mPoly.spatialReference = ext2.spatialReference; } if(graphic.geometry.type == "esriGeometryMultipoint"){ var mp:Multipoint = graphic.geometry as Multipoint var pnts:MapPoint; for (var p:int=0;p < mp.points.length; p++){ mPoint.addPoint(mp.points ); } rType = "point"; } if(graphic.geometry.type == "esriGeometryPolygon"){ var poly:Polygon = graphic.geometry as Polygon; for (var i2:int = poly.rings.length - 1; i2 >= 0; i2--){ var ringArray:Array = []; for (var j1:int = 0; j1 < poly.rings[i2].length; j1++){ var mp2:MapPoint = poly.getPoint(i2,j1) as MapPoint; mp2.spatialReference = poly.spatialReference; ringArray.push(mp2); } mPoly.addRing(ringArray); } rType = "poly"; mPoly.spatialReference = poly.spatialReference; } if(graphic.geometry.type == "esriGeometryPolyline"){ var polyl:Polyline = graphic.geometry as Polyline; for(var l:int=polyl.paths.length-1; l >= 0; l--){ var pathArray:Array = []; for (var j2:int = 0; j2 < polyl.paths.length; j2++){ var mp3:MapPoint = polyl.getPoint(l,j2) as MapPoint; mp3.spatialReference = polyl.spatialReference; pathArray.push(mp3); } mPolyL.addPath(pathArray); } rType = "line"; } if(graphic.geometry.type == "esriGeometryEnvelope"){ var ext:Extent = graphic.geometry as Extent; var pA:Array = []; pA.push(new MapPoint(ext.xmin,ext.ymin,ext.spatialReference)); pA.push(new MapPoint(ext.xmin,ext.ymax,ext.spatialReference)); pA.push(new MapPoint(ext.xmax,ext.ymax,ext.spatialReference)); pA.push(new MapPoint(ext.xmax,ext.ymin,ext.spatialReference)); pA.push(new MapPoint(ext.xmin,ext.ymin,ext.spatialReference)); mPoly.addRing(pA); rType = "poly"; } } switch(rType){ case "point":{ retGeom = mPoint; break; } case "poly":{ retGeom = mPoly; break; } case "line":{ retGeom = mPolyL; break; } } return retGeom; }
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.