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

简介:

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);就可以了,把你想显示的位置告诉他。
完整代码:

 

 

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>

原文地址: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如需转载请自行联系原作者

相关文章
|
3月前
|
数据可视化 Java API
API 参考与帮助内容:一站式开发与使用者支援
API 文档是旨在了解 API 详细信息的综合指南。通常,它们包括端点、请求示例、响应类别和示例以及错误代码等信息。API 文档可帮助开发人员了解 API 端点的具体细节,并了解如何将 API 成功集成到他们的软件中。
33 0
|
4月前
|
缓存 前端开发 API
手把手教你云相册项目简易开发day5 API服务搭建和权限框架
手把手教你云相册项目简易开发day5 API服务搭建和权限框架
56 0
|
2天前
|
前端开发 JavaScript API
前端秘法番外篇----学完Web API,前端才能算真正的入门
前端秘法番外篇----学完Web API,前端才能算真正的入门
|
12天前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
|
5月前
|
JSON JavaScript 前端开发
前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(四)完结撒花✿✿ヽ(°▽°)ノ✿
前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(四)完结撒花✿✿ヽ(°▽°)ノ✿
495 0
|
22天前
|
缓存 安全 API
深入理解Web开发中的RESTful API设计
在当今快速演进的技术世界中,RESTful API已成为构建现代Web应用不可或缺的一部分。它不仅促进了前后端的分离发展,还为不同平台间的数据交换提供了一种高效、标准化的方式。本文旨在深入探讨RESTful API的设计原则和最佳实践,通过具体示例说明如何设计易于维护、可扩展和安全的API。我们将从REST的基本概念出发,逐步深入到资源命名、HTTP方法的恰当使用、状态码的选择、以及安全性考虑等方面,为读者提供一个全面而深入的视角,帮助大家更好地理解和运用RESTful API。
|
2月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
6452 73
|
2月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
为了帮助用户高效率、低成本应对企业级复杂场景,函数计算团队正式推出 Stable Diffusion API Serverless 版解决方案,通过使用该方案,用户可以充分利用 Stable Diffusion +Serverless 技术优势快速开发上线 AI 绘画应用,期待为广大开发者 AI 绘画创业及变现提供思路。
87179 4
|
2月前
|
JSON 安全 数据挖掘
从入门到精通:淘宝API接口调用全攻略
概述: 在当今电子商务的繁荣发展下,淘宝作为中国领先的电商平台,不仅为消费者提供了便捷的购物环境,也为商家们提供了强大的数据支持和服务能力。淘宝开放平台提供的API接口使得商家能够高效地获取店铺和商品的实时数据,从而更好地分析市场趋势、优化店铺运营、提升用户体验。本文将详细介绍如何从入门到精通地调用淘宝API接口,使商家能够充分利用这一强大工具推动业务增长。
|
2月前
|
JavaScript 前端开发 IDE
Vue3【为什么选择Vue框架、Vue简介 、Vue API 风格 、Vue开发前的准备 、Vue项目目录结构 、模板语法、属性绑定 、 】(一)-全面详解(学习总结---从入门到深化)
Vue3【为什么选择Vue框架、Vue简介 、Vue API 风格 、Vue开发前的准备 、Vue项目目录结构 、模板语法、属性绑定 、 】(一)-全面详解(学习总结---从入门到深化)
38 1