import nl.idgis.giclient.gis.Layer; import nl.idgis.giclient.webserviceconnector.MapConnector; import nl.idgis.giclient.webserviceconnector.wmsconnector.WMSConnector; import nl.idgis.giclient.geoma.Envelope; import nl.idgis.giclient.io.XMLResponseListener; import nl.idgis.giclient.io.XMLResponse; import mx.xpath.XPathAPI; import nl.idgis.giclient.template.CallbackCounter; class nl.idgis.giclient.gis.WMLayer extends Layer implements XMLResponseListener { private var connector:WMSConnector; private var wmsScales:Array = null; private var formats:Array = null; private var mapTipElement:String = null; private var sldUrl:String = null; private var maptip:String = null; private var connectorMetaUrl:Boolean = false; function WMLayer(connector:WMSConnector, formats:Array, name:String, title:String, visible:Boolean, expanded:Boolean, scales:Array, superLayer:Layer, editable:Boolean ,mapTipElement:String ,sldUrl:String ) { super(name, title, visible, expanded, scales, superLayer, editable); //trace("WMLayer, name = " + name + " scales = " + scales.length); this.connector = connector; this.formats = formats; this.mapTipElement = mapTipElement; this.sldUrl = sldUrl; //trace("WMLayer " + name); } function getType():String { return "Image"; } function getFormats():Array { return formats; } function getMapConnector():MapConnector { return connector; } function getScales():Array { if(wmsScales != null) return wmsScales; var layerScales:Array = super.getScales(); if(layerScales.length == 0) wmsScales = connector.getScales(name); else wmsScales = layerScales; return wmsScales; } function getEnvelope():Envelope { return connector.getEnvelope(name, srs); } function hasMaptip():Boolean { return (mapTipElement != undefined && mapTipElement.length > 0); } function getMaptip():String { return maptip; } function getSldUrl():String { return sldUrl; } function onLoadXMLResponse(xmlResponse : XMLResponse) : Void { //trace("xmlResponse = " + xmlResponse); if (xmlResponse.getProperties()["postproces"] == "maptip" ) { var maptipNode:XMLNode = XPathAPI.selectSingleNode(xmlResponse.firstChild, mapTipElement); maptip = maptipNode.firstChild.nodeValue; //trace("name = " + name + " mapTipElement = " + mapTipElement + " maptipNode = " + maptipNode + " maptip = " + maptip); var callbackCounter:CallbackCounter = CallbackCounter(xmlResponse.getProperties()["callbackCounter"]); var countDown:Function = callbackCounter.getCallback(); countDown(); } } function getMetaUrl():String { var url:String = super.getMetaUrl(); if(url == null && !connectorMetaUrl) { url = connector.getMetaUrl(this); super.setMetaUrl(url); connectorMetaUrl = true; return url; } else { return url; } } }