import nl.idgis.giclient.gis.GIS; import nl.idgis.giclient.webserviceconnector.TransformConnector; import nl.idgis.giclient.webserviceconnector.TransformConnectorListener; import nl.idgis.giclient.geoma.Geometry; import nl.idgis.giclient.gis.CentreScale; import nl.idgis.giclient.geoma.Envelope; import nl.idgis.giclient.geoma.Point; import nl.idgis.giclient.geoma.MultiPoint; import nl.idgis.giclient.gis.Map; class nl.idgis.giclient.gis.TransformCentreScales implements TransformConnectorListener{ private var gis:GIS; private var transformConnector:TransformConnector; private var centreScales:Array; private var fromSrs:String; private var toSrs:String; private var map:Map; function TransformCentreScales(fromSrs:String, toSrs:String, gis:GIS, transformConnector:TransformConnector, centreScales:Array, map:Map) { this.fromSrs = fromSrs; this.toSrs = toSrs; this.gis = gis; this.transformConnector = transformConnector; this.centreScales = centreScales; this.map = map; } public function transform():Void { var points:Array = new Array(); for(var i = 0; i < centreScales.length; i++) { points.push(new Point(CentreScale(centreScales[i]).getSRS(), CentreScale(centreScales[i]).getCentreX(), CentreScale(centreScales[i]).getCentreY())); } var envelope:Envelope = map.getInitEnvelope(); if(envelope != null) { points.push(new Point(envelope.getSRS(), envelope.getMinX(), envelope.getMinY())); points.push(new Point(envelope.getSRS(), envelope.getMaxX(), envelope.getMaxY())); } transformConnector.transform(new MultiPoint(envelope.getSRS(), points), fromSrs, toSrs, this); } public function transformed(geom:Geometry):Void { var points:Array = MultiPoint(geom).getGeometries(); for(var i = 0; i < centreScales.length; i++) { CentreScale(centreScales[i]).setSRS(geom.getSRS()); CentreScale(centreScales[i]).setCentreX(Point(points[i]).getX()); CentreScale(centreScales[i]).setCentreY(Point(points[i]).getY()); } if(points.length > centreScales.length) { var p1:Point = points[points.length - 2]; var p2:Point = points[points.length - 1]; var envelope:Envelope = new Envelope(p1.getSRS(), p1.getX(), p1.getY(), p2.getX(), p2.getY()); map.setInitEnvelope(envelope); } //gis.gisEventDispatcher.changeSRS(); Object(gis).transformFeatures(fromSrs, toSrs); } }