arcgis api for flex 开发入门(九)webservices 的使用
flex 本身对webservices有着良好的支持,我们可以调用互联网上的各种
webservices来结合esri 的map 做出自己想要的东西
我们就拿现在比较流行的天气预报来做例子,我们要实现的目标就是通过
webservices查询到武汉的天气情况,然后使用infowindow 显示到esri 的map上
,在讲解过程中,我们会重点解释infowindow 的用法。
现在提供天气预报的webservices很多,我们选用
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?
来进行天气的查询。
那么,在flex中如何使用webservices呢?
只要使用 <mx:WebService>标签创建一个WebService就可以了,id唯一标识这个
webservice,wsdl指向提供webservice的地址。
<mx:WebService id="weatherWS"
wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?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);就可以了,把你想显示的位置告诉他。
完整代码:

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>

原文地址:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=35702&extra=page%3D3%26amp%3Borderby%3Ddateline

本文转自温景良(Jason)博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/06/02/1494576.html如需转载请自行联系原作者

arcgis api for flex 开发入门(九)webservices 的使用相关推荐

  1. arcgis api for flex 开发入门(二)map 的创建

    arcgis api for flex 开发入门(二)map 的创建 在flex 中创建一个esri 的map ,你只需要使用<esri:Map>标签就可以轻松完成. 在<esri: ...

  2. arcgis api for flex 开发入门(七)Geometry service 的使用

    arcgis api for flex 开发入门(七)Geometry service 的使用 Geometry service 顾名思义,就是提供针对几何层级的服务,比如说Project,   Si ...

  3. arcgis api for flex 开发入门(五)查询

    在gis中,针对要素的查询是一个最基本的操作,也是最常用的操作之一. 下面我们介绍如何使用arcgis api for flex 来查询我们需要的东西. 要在arcgis api for flex中进 ...

  4. ArcGIS API for Silverlight开发入门

    ArcGIS API for Silverlight开发入门 你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都 ...

  5. ArcGIS API for Silverlight开发入门准备

    原文:ArcGIS API for Silverlight开发入门准备 微软的Silverlight提供了跨浏览器和跨平台开发环境,在Web中可用于创建和展现富互联网应用(RIA,Rich Inter ...

  6. 13 ArcGIS API for JavaScript开发入门文档

    写在前面 这篇文章写在我用ArcGIS API for JavaScript(后面统称为"ArcGIS JS API")开发了两年项目后的某一天夜里.写这篇文章主要是两个目的吧,第 ...

  7. ArcGIS API for Silverlight开发入门(2):一个基础地图实例

    这节在一个地图实例的基础上,来对Silverlight API中的一些基本概念做一个总体了解,顺便熟悉一下Silverlight的开发知识.         点击这里,直接看效果. 下载 (722.0 ...

  8. ArcGis api配合vue开发入门系列(二)距离以及面积的测量

    正文 首先自定义个工具栏,包括测量距离与测量面积的工具以及地图漫游. 图标的话是用的iconfont.我是把这个工具单独写在一个组件里面,这个组件里面里面会用到一些操作地图的方法,我在map这个组件里 ...

  9. [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能(七)

    目的: 1.ArcGIS API for Flex实现Query查询定位中心功能,进行属性查图的功能,选择图层然后输入查询语句进行查询把查到的地理元素高亮显示同时在右边的Grid中显示查到的数据,然后 ...

最新文章

  1. sysbench0.5 mysql_sysbench 0.5 安装及 MySQL 基准测试
  2. 网站优化必知的五大发文注意事项
  3. spring boot原理_SpringBoot-02-原理初探之主启动类
  4. kali如何安装netcat_Netcat常用方法汇总
  5. 【Ubuntu】Linux系统( ubuntu )安装方案
  6. 你已经用上 5G 网络了吗?
  7. sudo su 与 su
  8. 大家在寻找的高级程序员到底是什么样子的?
  9. JEECG列表嵌套查询列表子查询+号功能
  10. cannot find -lmysqlclient 的解决方案
  11. 台大李宏毅Machine Learning 2017Fall学习笔记 (9)Keras
  12. Redis学习笔记——简介及配置
  13. shiro自定义filter,anon不生效
  14. ear的英语怎么念_ears用英语怎么读?
  15. Java虚拟机JVM简介与理解(三)
  16. 散转程序c语言,单片机 散转程序设计 软件实验
  17. PTA L1-040:最萌情侣身高差 (python)
  18. 使用es的新姿势 2.x 5.x 6.x通用
  19. 百度率先在元宇宙举办大会,李彦宏:中国迎来AI黄金十年
  20. HDU 1205 吃糖果

热门文章

  1. Kali Linux 64位安装WPS
  2. [一个小问题]Mainfest配置文件的version问题小结
  3. 成熟的男人思考的东西
  4. Spring Cloud--Honghu Cloud分布式微服务云系统—System系统管理
  5. mysql数据库表的基本操作
  6. 131、ThreadLocal (转载)
  7. 【nginx学习一】基本原理初探
  8. 第九章 硬件抽象层:HAL 心得笔记
  9. 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和普通变量之完全解读...
  10. 崇拜的Unix大牛,记录之。