加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ARCGIS viewer入门(8)flex viewer定制

发布时间:2020-12-15 04:36:23 所属栏目:百科 来源:网络整理
导读:?xml version="1.0" encoding="utf-8"? ? viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009" ? xmlns:s="library://ns.adobe.com/flex/spark" ? xmlns:mx="library://ns.adobe.com/flex/mx" ? xmlns:viewer="com.esri.viewer.*" ? widgetConfigLo
<?xml version="1.0" encoding="utf-8"?> ? <viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009" ? xmlns:s="library://ns.adobe.com/flex/spark" ? xmlns:mx="library://ns.adobe.com/flex/mx" ? xmlns:viewer="com.esri.viewer.*" ? widgetConfigLoaded="init()"> <fx:Script> <![CDATA[ import com.esri.ags.FeatureSet; import com.esri.ags.Graphic; import com.esri.ags.events.DrawEvent; import com.esri.ags.events.LayerEvent; import com.esri.ags.geometry.Geometry; import com.esri.ags.geometry.MapPoint; import com.esri.ags.layers.FeatureLayer; import com.esri.ags.layers.GraphicsLayer; import com.esri.ags.layers.supportClasses.Field; import com.esri.ags.layers.supportClasses.LayerDetails; import com.esri.ags.symbols.PictureMarkerSymbol; import com.esri.ags.symbols.SimpleFillSymbol; import com.esri.ags.symbols.SimpleLineSymbol; import com.esri.ags.symbols.SimpleMarkerSymbol; import com.esri.ags.tasks.supportClasses.Query; import com.esri.ags.tools.DrawTool; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.Image; import mx.formatters.DateFormatter; import mx.rpc.AsyncResponder; private var graphicPointSym:PictureMarkerSymbol; private var status:String; //============================== private var resultMarkerSymbol:PictureMarkerSymbol; private var resultLineSymbol:SimpleLineSymbol; private var resultFillSymbol:SimpleFillSymbol; private var configSearchGraphical:Array; private var configSearchText:Array; private var finishDrawing:Boolean; private var graphicalsearchLabel:String; private var graphicsLayer:GraphicsLayer; private var loadingLabel:String; private var nolayerLabel:String; private var queryLayer:FeatureLayer; private var queryGeom:Geometry; private var queryExpr:String; private var queryFields:XMLList; private var queryTitleField:String; private var queryLinkField:String; private var queryLinkAlias:String; private var resultsLabel:String; private var selectionLabel:String; private var selectedDrawingIcon:Image; private var textsearchLabel:String; private var zoomScale:Number = 50000; private var dateFormatter:DateFormatter = new DateFormatter(); private var textDirection:String; [Bindable] private var clearLabel:String; [Bindable] private var layerLabel:String; [Bindable] private var lineLabel:String; [Bindable] private var freehandLineLabel:String; [Bindable] private var noResultLabel:String; [Bindable] private var pointLabel:String; [Bindable] private var polygonLabel:String; [Bindable] private var freehandPolygonLabel:String; [Bindable] private var rectangleLabel:String; [Bindable] private var circleLabel:String; [Bindable] private var searchResultAC:ArrayCollection; [Bindable] private var submitLabel:String; [Bindable] private var msgVisible:Boolean = false; //==============================- var drawSymbol :SimpleMarkerSymbol; //this function called when the widget's configuration is loaded private function init():void { ? ? ? ? ? ? ?? if (configXML) ? { textDirection = getStyle("direction"); configSearchGraphical = []; configSearchText = []; var lyrList:XMLList = configXML..layer;//从widget对应的配置文件获取涂层 //Alert.show(lyrList.length().toString()); for (var i:int = 0; i < lyrList.length(); i++) { var lyrURL:String = lyrList[i].url; var lyrLabel:String = lyrList[i].name; var lyrGraphicalLabel:String = lyrList[i].graphicalsearchlabel || getDefaultString("graphicalsearchLabel"); var lyrTextLabel:String = lyrList[i].textsearchlabel || getDefaultString("textsearchLabel"); var lyrExpr:String = lyrList[i].expression; var lyrFields:XMLList = lyrList[i].fields; var lyrTitleField:String = lyrList[i].titlefield; var lyrLinkField:String = lyrList[i].linkfield; var linkAlias:String = lyrList[i].linkfield.@alias[0]; var useAMF:String = lyrList[i].useamf; var useProxy:Boolean = lyrList[i].useproxy[0] && lyrList[i].useproxy == "true"; var layer:FeatureLayer = new FeatureLayer(lyrURL); if (useProxy && configData.proxyUrl) { layer.proxyURL = configData.proxyUrl; } if (useAMF) { layer.useAMF = useAMF == "true"; } if (lyrFields && lyrFields[0].@all[0] == "true") { layer.outFields = [ "*" ]; } else if (lyrFields) { var fields:XMLList = lyrFields.field; layer.outFields = []; for each (var fieldXML:XML in fields) { if (fieldXML.@name[0]) { layer.outFields.push(fieldXML.@name[0]); } } } var searchLayer:Object = { layer: layer,label: lyrLabel,textlabel: lyrTextLabel,graphicallabel: lyrGraphicalLabel,expr: lyrExpr,fields: lyrFields,titlefield: lyrTitleField,linkfield: lyrLinkField,linkalias: linkAlias }; configSearchGraphical.push(searchLayer); if (lyrExpr) { configSearchText.push(searchLayer); } }//end for //Alert.show(configSearchGraphical.length.toString()); } const resultMarkerSymbolURL:String = configXML.symbols.picturemarkersymbol.@url || widgetIcon; const resultMarkerSymbolHeight:Number = (configXML.symbols.picturemarkersymbol.@height != null) ? configXML.symbols.picturemarkersymbol.@height : 30; const resultMarkerSymbolWidth:Number = (configXML.symbols.picturemarkersymbol.@width != null) ? configXML.symbols.picturemarkersymbol.@width : 30; const resultMarkerSymbolXOffset:Number = (configXML.symbols.picturemarkersymbol.@xoffset != null) ? configXML.symbols.picturemarkersymbol.@xoffset : 0; const resultMarkerSymbolYOffset:Number = (configXML.symbols.picturemarkersymbol.@yoffset != null) ? configXML.symbols.picturemarkersymbol.@yoffset : 0; resultMarkerSymbol = new PictureMarkerSymbol(resultMarkerSymbolURL,resultMarkerSymbolWidth,resultMarkerSymbolHeight,resultMarkerSymbolXOffset,resultMarkerSymbolYOffset); const resultLineSymbolColor:uint = configXML.symbols.simplelinesymbol.@color || 0xFF0000; const resultLineSymbolAlpha:Number = (configXML.symbols.simplelinesymbol.@alpha[0] != null) ? configXML.symbols.simplelinesymbol.@alpha : 0.8; const resultLineSymbolWidth:Number = (configXML.symbols.simplelinesymbol.@width[0] != null) ? configXML.symbols.simplelinesymbol.@width : 2; resultLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,resultLineSymbolColor,resultLineSymbolAlpha,resultLineSymbolWidth); const resultFillSymbolColor:uint = configXML.symbols.simplefillsymbol.@color || 0xFF0000; const resultFillSymbolAlpha:Number = (configXML.symbols.simplefillsymbol.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.@alpha : 0.5; const resultFillSymbolOutlineColor:uint = configXML.symbols.simplefillsymbol.outline.@color || 0xFF0000; const resultFillSymbolOutlineAlpha:Number = (configXML.symbols.simplefillsymbol.outline.@alpha[0] != null) ? configXML.symbols.simplefillsymbol.outline.@alpha : 0.8; const resultFillSymbolOutlineWidth:Number = (configXML.symbols.simplefillsymbol.outline.@width[0] != null) ? configXML.symbols.simplefillsymbol.outline.@width : 2; resultFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,resultFillSymbolColor,resultFillSymbolAlpha,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,resultFillSymbolOutlineColor,resultFillSymbolOutlineAlpha,resultFillSymbolOutlineWidth)); graphicsLayer = new GraphicsLayer(); graphicsLayer.name = configXML.layername || widgetTitle; graphicsLayer.symbol = resultMarkerSymbol; //graphicsLayer.addEventListener(FlexEvent.HIDE,graphicsLayer_hideHandler); map.addLayer(graphicsLayer); } private function widgetClosedHandler(event:Event):void { graphicsLayer.visible = false; ? } private function widgetOpenedHandler(event:Event):void { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? activateTool(); ? if (graphicsLayer) ? { ? graphicsLayer.visible = true; ? } } private function activateTool():void { //drawSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE,15,0x3FAFDC,1); setMapAction(DrawTool.MAPPOINT,"Click Point",graphicPointSym,drawEnd); } private function drawEnd(event:DrawEvent):void { var geom:Geometry = ?event.graphic.geometry; //var pt:MapPoint = geom as MapPoint; queryFeaturesGraphical(geom); //Alert.show("Click location: " + pt.x + "," + pt.y); // } private function queryFeaturesGraphical(geom:Geometry):void { var index:int=1; try { //var i:int = cboLayerGraphical.selectedIndex; queryLayer = configSearchGraphical[index].layer;//关键方法,得到查询的图层 //Alert.show('000'); if (queryLayer && !queryLayer.loaded) { queryLayer.addEventListener(LayerEvent.LOAD,queryLayer_loadHandler); function queryLayer_loadHandler(event:LayerEvent):void { queryFeaturesGraphical(geom) } return; } queryGeom = geom;//查询图元 queryFields = configSearchGraphical[index].fields;//查询的字段 //Alert.show('field:'+configSearchGraphical[index].fields); queryTitleField = configSearchGraphical[index].titlefield; queryLinkField = configSearchGraphical[index].linkfield; queryLinkAlias = configSearchGraphical[index].linkalias; activateTool() if (queryLayer) { var query:Query = new Query(); query.geometry = queryGeom; query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS; query.outSpatialReference = map.spatialReference; queryLayer.queryFeatures(query,new AsyncResponder(onResult,onFault,queryFields)); ? } }catch (error:Error) { Alert.show('错误:'+error.message); } } ? function onResult(featureSet:FeatureSet,token:XMLList = null):void { try { //searchResultAC = createSearchResults(featureSet,token); //addSharedData(widgetTitle,searchResultAC);//查到的图元,增加到上节说的共享数据区域,提供其他插件或本身使用。 if (featureSet.features.length < 1) { Alert.show('查询无数据'); } else { for each (var graphic:Graphic in featureSet.features) { if (graphic.geometry) { switch (graphic.geometry.type) { case Geometry.MAPPOINT: { graphic.symbol = resultMarkerSymbol; break; } case Geometry.POLYLINE: { graphic.symbol = resultLineSymbol; break; } case Geometry.POLYGON: { graphic.symbol = resultFillSymbol; break; } } } graphicsLayer.add(graphic); } for(var i:int=0 ;i<featureSet.features.length;i++) { Alert.show('查询结果:'+featureSet.features[i].attributes.NAME ? ); } } ? } catch (error:Error) { Alert.show('查询错误:'+error.message); } } function onFault(info:Object,token:Object = null):void { Alert.show('查询失败:'+info.toString()); } ]]> </fx:Script> <viewer:WidgetTemplate id="wTemplate" height="82" closed="widgetClosedHandler(event)" ? open="widgetOpenedHandler(event)"> <viewer:layout> <s:BasicLayout/> </viewer:layout> <s:Label id="lbl" width="100%" fontSize="18" fontStyle="italic" fontWeight="bold"/> </viewer:WidgetTemplate> </viewer:BaseWidget>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读