ArcGIS Api For Flex 动态画点和线(2)

原创 2013年12月05日 11:25:26

通过webservicesflex交互取得数据库中的gps坐标动态显示在地图上。

 

 

1.建立数据库:

 

 

2.建立webservices:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.OleDb;
using System.Data;

 

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//
若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
    public Service () {

 

       //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

 

    [WebMethod]
    public string HelloWorld() {
        return “Hello World”;
    }
    [WebMethod]
    public string GetGPS()
    {
        DataSet myDS;
        string strtemp = string.Empty;
        string myConStr =@”Provider=Microsoft.ACE.OLEDB.12.0;DataSource=D:databaseforgpsDatabase1.accdb;”;
        OleDbConnection myCon = newOleDbConnection(myConStr);
        try   //
异常处理语句

        {
           myCon.Open();
            stringcomStr = “Select * from gps”;
           OleDbDataAdapter myAD = new OleDbDataAdapter(comStr, myCon);
             myDS =new DataSet();
           myAD.Fill(myDS, “gps”);
        }
        catch (OleDbException oe)
        {
            throw oe;
        }
        finally
        {
            //
如果Connection是打开的,则关闭
            if(myCon.State == ConnectionState.Open)
               myCon.Close();
        }
        for (int i = 0; i <myDS.Tables[0].Rows.Count; i++)
        {
            strtemp +=myDS.Tables[0].Rows[i]["X"].ToString() + “,” +myDS.Tables[0].Rows[i]["Y"].ToString()+”/”;
        }
        return strtemp;
    }
   
}
3.
编写flex代码:

 

<?xml version=”1.0″ encoding=”utf-8″?>
<s:Application 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:supportClasses=”com.esri.ags.skins.supportClasses.*” minWidth=”955″minHeight=”600″ xmlns:esri=”
http://www.esri.com/2008/ags

      initialize=”init()”
      >    
 <fx:Script>
  <![CDATA[
   import com.esri.ags.Graphic;
   import com.esri.ags.SpatialReference;
   importcom.esri.ags.components.supportClasses.InfoSymbolWindow;
   import com.esri.ags.geometry.MapPoint;
   import com.esri.ags.geometry.Polyline;
   import com.esri.ags.layers.GraphicsLayer;
   import com.esri.ags.symbols.InfoSymbol;
   import com.esri.ags.symbols.SimpleLineSymbol;
   import com.esri.ags.symbols.SimpleMarkerSymbol;
   import com.esri.ags.symbols.Symbol;
   
   import mx.controls.Alert;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.soap.WebService;
   private var arr:Array=new Array();
   private var arr2:Array = new Array();
   private var polyine:Polyline=new Polyline();
   private var graphicsLayer:GraphicsLayer=new GraphicsLayer();
   private var graphicsLayertxt:GraphicsLayer=newGraphicsLayer();
   private var grahpic:Graphic=new Graphic();
   private var grahpictxt:Graphic=new Graphic();
   private var strws:String=new String();
   
   private function init():void
   {
    graphicsLayer.add(grahpic);
    Map.addLayer(graphicsLayer);
    graphicsLayertxt.add(grahpictxt);
    Map.addLayer(graphicsLayertxt);
   }     
   private function PlayPoint(e:MouseEvent):void
   {
       var ws:WebService = new WebService();
    ws.loadWSDL("
http://localhost/gps/Service.asmx?wsdl
");
    ws.addEventListener(FaultEvent.FAULT,onFAULT);
    ws.addEventListener(ResultEvent.RESULT,onRESULT);
    ws.GetGPS();
    
   }
   private function PlayLine(e:MouseEvent):void
   {
    
    polyine=new Polyline();
    var i:int=0;
    var timer:Timer = new Timer(1000, arr.length-1);
    timer.addEventListener(TimerEvent.TIMER, TimerMethod);
    timer.start();
    function TimerMethod(event:TimerEvent):void
    {
     var mps:Array=new Array;
     var mpStat:MapPoint=arr[i] as MapPoint;
     var mpEnd:MapPoint=arr[i+1] as MapPoint;
     mps.push(mpStat);
     mps.push(mpEnd);
     polyine.addPath(mps);
       
     grahpic=new Graphic(polyine,sls);
     
     graphicsLayer.add(grahpic);
     i=i+1;
    }
   }
   internal function onFAULT(evt:FaultEvent):void
   {
      Alert.show(evt.fault.faultDetail.toString());
   }
   internal function onRESULT(evt:ResultEvent):void
   {
      //Alert.show(evt.result.toString());
    strws=evt.result.toString();
    arr2=strws.split(“/”);
    for(var j:int=0;j<arr2.length-1;j++)
       {
     varx:String=arr2[j].toString().substr(0,arr2[j].toString().indexOf(“,”));
     vary:String=arr2[j].toString().substr(arr2[j].toString().indexOf(“,”)+1,arr2[j].toString().length-x.length);
     var X:Number = Number(x);
     var Y:Number = Number(y);
     var pt:MapPoint = new MapPoint(X,Y,newSpatialReference(5326));
     arr.push(pt);
     //Alert.show(Y.toString());
    
    }
    
    graphicsLayer.clear();
    var i:int=0;
    var timer:Timer = new Timer(1000, arr.length-1);
    var tmp:MapPoint=arr[i] as MapPoint;
    Map.zoom(-10,tmp);
    timer.addEventListener(TimerEvent.TIMER, TimerMethod);
    timer.start();
    function TimerMethod(event:TimerEvent):void
    {
     var mps:Array=new Array;
     var mpStat:MapPoint=arr[i] as MapPoint;
     
     
     grahpic=new Graphic(mpStat,sps);
     var dt:Date = new Date();
     
     txts.text=”xxx”+”
于:
”+dt.fullYear.toString()+”-”+(dt.month+1).toString()+”-”+dt.date.toString()+”“+dt.hours.toString()+”:”+dt.minutes.toString()+”:”+dt.seconds.toString();
     grahpictxt = new Graphic(mpStat,txts);
     graphicsLayertxt.add(grahpictxt);
     graphicsLayer.add(grahpic);
     Map.centerAt(mpStat);
     i=i+1;
    }
     
   }
     

 

  ]]>
 </fx:Script>
 <fx:Declarations>
  
  <!–
将非可视元素(例如服务、值对象)放在此处
–>
  <!–<s:WebService id=”ws” wsdl=”
http://localhost/gps/Service.asmx?wsdl
“  useProxy=”false”>
   <s:operation name=”GetGPS” fault=”">
  
   </s:operation>

 

  </s:WebService>–>

 

  <esri:SimpleLineSymbolid=”sls”
          width=”3″
          color=”0x00FF00″/>
  <esri:SimpleMarkerSymbol id=”sms”
         color=”0x00FF00″
         size=”12″
         style=”square”/>
  <esri:PictureMarkerSymbol id=”sps” source=”
http://localhost/Red_glow.swf
“  width=”20″ height=”20″ />
  <esri:TextSymbol id=”txts” backgroundColor=”0x00FF00″ color=”0xFF0000″/>

 

 
 </fx:Declarations>
 <esri:Map id=”Map” >
  <esri:ArcGISTiledMapServiceLayer
   url=”
http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaCities_Community_BaseMap_ENG/ShenYang_Community_BaseMap_ENG/MapServer”/
>
  <!–<esri:ArcGISDynamicMapServiceLayer url=”
http://218.60.144.97:8080/RemoteRest/services/LN_SL/MapServer”/>–>

 

 </esri:Map>
 
 
 <mx:ControlBar  width=”100%” top=”0″ left=”0″ paddingTop=”0″paddingBottom=”0″   horizontalAlign=”left” >
  <mx:Button label=”
开始点轨迹
”  width=”100″ fontSize=”12″click=”PlayPoint(event)”/>
  <mx:Button label=”
开始线轨迹
”  width=”100″ fontSize=”12″click=”PlayLine(event)”/>
 </mx:ControlBar>

 

 
</s:Application>

 

ArcGIS.Server.9.3和ArcGIS API for Flex实现GraphicsLayer上画点、线、面(五)

目的: 1.ArcGIS API for Flex实现GraphicsLayer上画点、线、面。 准备工作: 1.这次地图数据就用Esri提供的http://server.arcgisonlin...

ArcGIS Api For Android学习之(三)画点、线、面

本节目标:实现学习DrawGraphicElements例子利用GraphicsLayer在地图上画点、线和面。 关键要点: 1. 屏幕点击事件监听。 2. 符号的设置 具体代码如下: ...
  • SYDBC
  • SYDBC
  • 2013年12月05日 10:54
  • 5303

ArcGIS API for Flex(五) 加载动态地图

此例演示如何加载动态地图 先看效果 代码如下

arcgis for flex api version3.7 教程:2.通过地图服务的ID添加地图

ArcGIS web map 可以说成是一个底图和一系列的可进行任务处理和交互的图层。地图显示形式丰富,可以是多级别显示的底图(basemap)、应用图层(operations layers)、弹出窗...

ArcGis For Silverlight API,地图显示Gis,绘制点,线,绘制图等(四)--动态绘制点

平台:Vs 2010,Blend 4,Silverlight 4   调用API: ArcGis for Silverligth API(ESRI.ArcGIS.Client)   本节就作为Ar...

ArcGIS.Server.9.3和ArcGIS API for Flex实现动态图层和瓦片图层叠加显示(二)

目的:1.ArcGIS.Server.9.3和ArcGIS API for Flex实现动态图层和瓦片图层叠加显示,在瓦片基图上显示动态图层。准备工作:1.在ArcGIS.Server.9.3发布一个...

ArcGIS API for Flex 2.3 离线文档

  • 2011年05月07日 10:34
  • 3.63MB
  • 下载

ArcGIS API for Flex 2.4离线文档

  • 2011年11月03日 22:03
  • 4.08MB
  • 下载

ArcGIS API for Silverlight 动态添加点的同时,添加文字说明(利用TextSymbol添加多文字信息 )

在前面的博客中提到动态添加点,地址:http://blog.csdn.net/taomanman/article/details/7354103 这里根据需要,在添加点的同时,动态添加文字信息。 ...

ArcGIS API for Flex 3.4离线文档

  • 2014年06月23日 11:19
  • 6.21MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ArcGIS Api For Flex 动态画点和线(2)
举报原因:
原因补充:

(最多只允许输入30个字)