import nl.idgis.giclient.webserviceconnector.TransformConnector; import nl.idgis.giclient.webserviceconnector.TransformConnectorListener; import nl.idgis.giclient.geoma.Geometry; import nl.idgis.giclient.geoma.MultiPoint; import nl.idgis.giclient.geoma.Point; import nl.idgis.giclient.geoma.Envelope; import nl.idgis.giclient.webserviceconnector.wmsconnector.WMSConnector; import nl.idgis.giclient.webserviceconnector.wmsconnector.WMSConnectorListener; class nl.idgis.giclient.webserviceconnector.wmsconnector.TransformAction implements TransformConnectorListener { private var connector:TransformConnector = null; private var listener:WMSConnectorListener = null; private var instances:Array = null; private var instanceCounter:Number; private var srsCounter:Number; function TransformAction(instances:Array, connector:TransformConnector, listener:WMSConnectorListener) { this.instances = instances; this.connector = connector; this.listener = listener; instanceCounter = instances.length - 1; srsCounter = WMSConnector(instances[instanceCounter]).srs.length - 1; } function transform() { var wmsConnector:WMSConnector = WMSConnector(instances[instanceCounter]); if(Array(wmsConnector.toTransformPoints[srsCounter]).length > 0) connector.transform( new MultiPoint("EPSG:4326", wmsConnector.toTransformPoints[srsCounter]), "EPSG:4326", wmsConnector.srs[srsCounter], this); else transformed(null); } private function toEnvelope(p1:Point, p2:Point):Envelope { return new Envelope(p1.getSRS(), p1.getX(), p1.getY(), p2.getX(), p2.getY()); } function transformed(geom:Geometry):Void { if(geom != null) { var wmsConnector:WMSConnector = WMSConnector(instances[instanceCounter]); var points:Array = geom.getGeometries(); var j:Number = 0; for(var i:Number = 0; i < points.length; i+=2) { var envelope:Envelope = toEnvelope(Point(points[i]), Point(points[i + 1])); wmsConnector.envelopes[ wmsConnector.srs[srsCounter] + wmsConnector.toTransformNames[srsCounter][j]] = envelope; j++; } } srsCounter--; if(srsCounter >= 0) transform(); else { instanceCounter--; if(instanceCounter >= 0) { srsCounter = WMSConnector(instances[instanceCounter]).srs.length - 1; transform(); } else listener.onWMSReady(); } } }