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

2024-03-05 00:18
文章标签 动态 arcgis api flex 画点

本文主要是介绍ArcGIS Api For Flex 动态画点和线(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过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 Api For Flex 动态画点和线(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/774721

相关文章

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a