博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
arcgis api for flex 开发入门(九)webservices 的使用
阅读量:6867 次
发布时间:2019-06-26

本文共 5060 字,大约阅读时间需要 16 分钟。

arcgis api for flex 开发入门(九)webservices 的使用

flex 本身对webservices有着良好的支持,我们可以调用互联网上的各种
webservices来结合esri 的map 做出自己想要的东西
我们就拿现在比较流行的天气预报来做例子,我们要实现的目标就是通过
webservices查询到武汉的天气情况,然后使用infowindow 显示到esri 的map上
,在讲解过程中,我们会重点解释infowindow 的用法。
现在提供天气预报的webservices很多,我们选用
?
来进行天气的查询。
那么,在flex中如何使用webservices呢?
只要使用 <mx:WebService>标签创建一个WebService就可以了,id唯一标识这个
webservice,wsdl指向提供webservice的地址。
<mx:WebService id="weatherWS"
wsdl=""
showBusyCursor="true"/>
我们直接在application 创建完成的时候调用这个 webservice,得到结果后直接
显示到map上 。
private function Init():void
{
  weatherWS.addEventListener(ResultEvent.RESULT,
WSGetWeatherResult);
            weatherWS.getWeatherbyCityName("武汉");
}
private function WSGetWeatherResult(event:ResultEvent):void
          {
           weatherWS.removeEventListener
(ResultEvent.RESULT,WSGetWeatherResult);
           var arrC:ArrayCollection =event.result as
ArrayCollection;
           if(arrC.length > 0)
           {
             var str:String = arrC.getItemAt(0).toString();
        //     var infWd :InfoWindow = new InfoWindow(EsriMap);
              var str2:String = arrC.getItemAt(1).toString();
             myMap.infoWindow.title= str+"."+str2;  
             var vbox :VBox = new VBox();
             var vbox2 :VBox = new VBox();
             var hbox :HBox = new HBox();
             var canvas:Canvas = new Canvas();
             var path:String = "assets\\weather\\";
             var img1 :Image = new Image;
             img1.load(path+arrC.getItemAt(8).toString());
             hbox.addChild(img1);
             var img2 :Image = new Image;
             img2.load(path+arrC.getItemAt(9).toString());
             hbox.addChild(img2);
            
           
             var txtTem :Text = new Text();
             txtTem.text =  arrC.getItemAt(5).toString();
             var txtWea :Text = new Text();
             txtWea.text =  arrC.getItemAt(6).toString();
             var txtWind :Text = new Text();
             txtWind.text =  arrC.getItemAt(7).toString();
             vbox.addChild(txtTem);
             vbox.addChild(txtWea);
             vbox.addChild(txtWind);
             vbox2.addChild(hbox);
             vbox2.addChild(vbox);
             canvas.addChild(vbox2);
            
             myMap.infoWindow.content = canvas;
             var mapPnt2:MapPoint = new MapPoint
(114.1547298,30.5127677);
             myMap.infoWindow.show(mapPnt2);
             myMap.centerAt(mapPnt2);                  
   
           }
          }
设置infoWindow有两点需要注意,一是infoWindow不需要自己new一个,只需要把
你要显示的内容赋值给myMap.infoWindow,二是显示的时候只需要调用
myMap.infoWindow.show(mapPnt2);就可以了,把你想显示的位置告诉他。
完整代码:

 

 

ContractedBlock.gif
ExpandedBlockStart.gif
Code
<?
xml version="1.0" encoding="utf-8"
?>
<
mx:Application 
xmlns:mx
="http://www.adobe.com/2006/mxml"
    pageTitle
="Service Area"
    xmlns:esri
="http://www.esri.com/2008/ags"
    layout
="absolute"
     creationComplete
="Init()"
>
    
<
mx:Script
>
        
<![CDATA[
            import mx.containers.HBox;
         import mx.containers.VBox;
         import mx.controls.Image;
         import mx.rpc.events.ResultEvent;
         //导入flash的命名空间
         import mx.collections.ArrayCollection;
            import mx.controls.Alert;   
            import mx.controls.Button;
            import mx.rpc.AsyncResponder;
            import flash.geom.Point;
            import mx.rpc.events.FaultEvent;
            import mx.printing.FlexPrintJobScaleType;
            import mx.printing.FlexPrintJob;
            import mx.rpc.soap.mxml.Operation;
            import mx.containers.Canvas;
             import flash.text.*;
             import mx.controls.Text;
            
            
            //导入esri flex api
         import com.esri.ags.geometry.MapPoint;
            import com.esri.ags.Graphic;       
            import com.esri.ags.events.DrawEvent;  
            import com.esri.ags.events.ExtentEvent;                     
                    
            import com.esri.ags.SpatialReference;            
            import com.esri.ags.layers.GraphicsLayer;
   import com.esri.ags.*; 
   import com.esri.ags.InfoWindow;
   import com.esri.ags.InfoTemplate;
        private function Init():void
        {
         weatherWS.addEventListener(ResultEvent.RESULT, 
WSGetWeatherResult); 
         weatherWS.getWeatherbyCityName("武汉");
        }
   private function WSGetWeatherResult
(event:ResultEvent):void
          {
           weatherWS.removeEventListener
(ResultEvent.RESULT,WSGetWeatherResult);
           var arrC:ArrayCollection =event.result as 
ArrayCollection;
           if(arrC.length > 0)
           {
             var str:String = arrC.getItemAt(0).toString();
        //     var infWd :InfoWindow = new InfoWindow(EsriMap);
              var str2:String = arrC.getItemAt(1).toString();
             myMap.infoWindow.title= str+"."+str2;  
             var vbox :VBox = new VBox();
             var vbox2 :VBox = new VBox();
             var hbox :HBox = new HBox();
             var canvas:Canvas = new Canvas();
             var path:String = "assets\\weather\\";
             var img1 :Image = new Image;
             img1.load(path+arrC.getItemAt(8).toString());
             hbox.addChild(img1);
             var img2 :Image = new Image;
             img2.load(path+arrC.getItemAt(9).toString());
             hbox.addChild(img2);
            
           
             var txtTem :Text = new Text();
             txtTem.text =  arrC.getItemAt(5).toString();
             var txtWea :Text = new Text();
             txtWea.text =  arrC.getItemAt(6).toString();
             var txtWind :Text = new Text();
             txtWind.text =  arrC.getItemAt(7).toString();
             vbox.addChild(txtTem);
             vbox.addChild(txtWea);
             vbox.addChild(txtWind);
             vbox2.addChild(hbox);
             vbox2.addChild(vbox);
             canvas.addChild(vbox2);
            
             myMap.infoWindow.content = canvas;
             var mapPnt2:MapPoint = new MapPoint
(114.1547298,30.5127677);
             myMap.infoWindow.show(mapPnt2);
             myMap.centerAt(mapPnt2);                   
    
           }
          }
        
]]>
    
</
mx:Script
>
    
<
esri:Map 
id
="myMap"
 openHandCursorVisible
="false"
>
        
<
esri:extent
>
            
<
esri:Extent 
xmin
="113"
 ymin
="30"
 xmax
="115"
 ymax
="32"
/>
        
</
esri:extent
>
        
<
esri:ArcGISTiledMapServiceLayer
            
url
="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap
_World_2D/MapServer"
/>
        
</
esri:Map
>
<
mx:WebService 
id
="weatherWS"
 
wsdl
="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL"
 
showBusyCursor
="true"
/>
   
</
mx:Application
>

原文地址:

 

 

本文转自温景良(Jason)博客园博客,原文链接:如需转载请自行联系原作者

你可能感兴趣的文章
Oracle OEM 配置报错: No value was set for the parameter DBCONTROL_HTTP_PORT 解决方法
查看>>
关于 Oracle DB CONSTRAINT约束的一些SQL ORA-02292: integrity constraint violated
查看>>
数组 = 容器
查看>>
3.25Day06元组、字典、集合常用及内置方法
查看>>
关于NB-IoT的十大问题和答案【转】
查看>>
Foundations of Qt Development 学习笔记 Part1 Tips1-50
查看>>
hive的实现机制
查看>>
PyQt5:布局
查看>>
shllter自动和手动实例
查看>>
团队冲刺第一天
查看>>
[转]数据结构:图的存储结构之邻接多重表
查看>>
Dreamweaver——如何使网页中的第一个DIV水平居中
查看>>
POJ_2001_Shortest Prefixes
查看>>
Webpack 的 HtmlWebpackPlugin 如何控制某个 chunks 的 inject 位置?
查看>>
Silverlight C# 游戏开发:未写代码先设计
查看>>
return false
查看>>
BZOJ3769:BST again(记忆化搜索DP)
查看>>
第二章:演化架构师
查看>>
20165315 第八周考试课下补做
查看>>
学习CAS实现SSO单点登录
查看>>